// $ANTLR 3.4 C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g 2013-09-30 13:19:27

package ru.andremoniy.objctojavacnv.antlr.output;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

import org.antlr.runtime.tree.*;


@SuppressWarnings({"all", "warnings", "unchecked"})
public class ObjcmParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ARRAY_INIT", "ASSIGN", "ASTERISK", "BLOCK", "BREAK", "BREAK_WORD", "CASE_BODY", "CASE_EXPR", "CASE_STMT", "CATCH_STMT", "CATEGORY", "CLASSICAL_EXPR", "CLASSICAL_EXPR_2", "COLON", "COMMA", "CONST_EXPR", "CONST_EXPR2", "CONST_PREFIX", "DEFAULT_BODY", "DEFAULT_STMT", "DIGIT", "DOT", "ENCODE", "ENUM", "ENUM_PREFIX", "ESC", "EXC_TYPE", "EXPR", "EXPR_ADD", "EXPR_AND", "EXPR_AND_AND", "EXPR_ASSIGN", "EXPR_COND", "EXPR_EQ", "EXPR_FULL", "EXPR_MOV", "EXPR_MULT", "EXPR_NOT", "EXPR_OR", "EXPR_OR_OR", "EXPR_QUESTION", "EXPR_UNNAME", "EXPR_XOR", "EXTERN", "FIELD", "FIELD_ACCESS", "FIELD_TYPE_STARTED", "FINALLY_BLOCK", "FOR_IN_STMT", "FOR_STMT", "FOR_STMT_EXPR", "FUNCTION", "GENERIC", "GOTO", "ID", "IF_BLOCK", "IF_EXPR", "IF_STMT", "IMPLEMENTATION", "INCOMPLETE_PREFIX", "INDEX", "INDEX_NUMBER", "INTERFACE", "LETTER", "L_AND", "L_AND_AND", "L_AND_EQ", "L_BR", "L_BR_TOKEN", "L_DIV", "L_DIV_EQ", "L_EQ", "L_EQ_EQ", "L_FBR", "L_KBR", "L_LEFT", "L_LEFT_EQ", "L_LESS", "L_LESS_EQ", "L_MINUS", "L_MINUS_EQ", "L_MINUS_MINUS", "L_MORE", "L_MORE_EQ", "L_MULT_EQ", "L_NEQ", "L_NOT", "L_OR", "L_OR_EQ", "L_OR_OR", "L_PERC", "L_PERC_EQ", "L_PLUS", "L_PLUS_EQ", "L_PLUS_PLUS", "L_QUESTION", "L_RIGHT", "L_RIGHT_EQ", "L_TILDA", "L_XOR", "L_XOR_EQ", "MESSAGE", "METHOD", "METHOD_CALL", "METHOD_MSG", "METHOD_NAME", "MODIFIER", "MSG_LIST", "MULTI_COMMENT", "M_IMPORT", "M_TYPE_START", "NAME", "NOT", "NUMBER", "OBJECT", "OP", "OPER", "OPERATOR", "PARAM", "PREFIX", "PREPROCESSOR_DECLARATION", "PROTOCOL", "RETURN_STMT", "R_BR", "R_FBR", "R_KBR", "SELECTOR", "SELECTOR_VALUE", "SEMICOLON", "SIMPLE_EXPR", "SINGLE_COMMENT", "SINGLE_OP", "SIZEOF", "STATIC", "STATIC_METHOD", "STATIC_PREFIX", "STATIC_START", "STATIC_TYPE", "STRING", "STRING_LITERAL", "STRING_LITERAL2", "STRING_LITERAL3", "STRUCT_FIELD", "STRUCT_INIT", "STRUCT_PREFIX", "STRUCT_VARIABLE", "SUPER_CLASS", "SWITCH", "SWITCH_BODY", "SWITCH_EXPRESSION", "THROW_EXCEPTION", "THROW_STMT", "TRY_STMT", "TYPE", "TYPEDEF", "TYPEDEF_ELEMENT", "TYPEDEF_STRUCT", "TYPE_CONVERTION", "TYPE_CONVERTION2", "TYPE_RENAME", "VALUE", "VARIABLE_INIT", "VA_ARGS", "VOID", "WHILE_EXPR", "WHILE_STMT", "WS", "'\"C\"'", "'->'", "'...'", "'@catch'", "'@encode'", "'@end'", "'@finally'", "'@implementation'", "'@interface'", "'@private'", "'@property'", "'@protocol'", "'@public'", "'@selector'", "'@synthesize'", "'@throw'", "'@try'", "'Nil'", "'__attribute__'", "'__typeof__'", "'assign'", "'case'", "'constructor'", "'copy'", "'default'", "'do'", "'else'", "'extern'", "'for'", "'goto'", "'if'", "'in'", "'inline'", "'nil'", "'readwrite'", "'return'", "'switch'", "'typedef'", "'union'", "'unsigned'", "'while'"
    };

    public static final int EOF=-1;
    public static final int T__171=171;
    public static final int T__172=172;
    public static final int T__173=173;
    public static final int T__174=174;
    public static final int T__175=175;
    public static final int T__176=176;
    public static final int T__177=177;
    public static final int T__178=178;
    public static final int T__179=179;
    public static final int T__180=180;
    public static final int T__181=181;
    public static final int T__182=182;
    public static final int T__183=183;
    public static final int T__184=184;
    public static final int T__185=185;
    public static final int T__186=186;
    public static final int T__187=187;
    public static final int T__188=188;
    public static final int T__189=189;
    public static final int T__190=190;
    public static final int T__191=191;
    public static final int T__192=192;
    public static final int T__193=193;
    public static final int T__194=194;
    public static final int T__195=195;
    public static final int T__196=196;
    public static final int T__197=197;
    public static final int T__198=198;
    public static final int T__199=199;
    public static final int T__200=200;
    public static final int T__201=201;
    public static final int T__202=202;
    public static final int T__203=203;
    public static final int T__204=204;
    public static final int T__205=205;
    public static final int T__206=206;
    public static final int T__207=207;
    public static final int T__208=208;
    public static final int T__209=209;
    public static final int T__210=210;
    public static final int T__211=211;
    public static final int ARRAY_INIT=4;
    public static final int ASSIGN=5;
    public static final int ASTERISK=6;
    public static final int BLOCK=7;
    public static final int BREAK=8;
    public static final int BREAK_WORD=9;
    public static final int CASE_BODY=10;
    public static final int CASE_EXPR=11;
    public static final int CASE_STMT=12;
    public static final int CATCH_STMT=13;
    public static final int CATEGORY=14;
    public static final int CLASSICAL_EXPR=15;
    public static final int CLASSICAL_EXPR_2=16;
    public static final int COLON=17;
    public static final int COMMA=18;
    public static final int CONST_EXPR=19;
    public static final int CONST_EXPR2=20;
    public static final int CONST_PREFIX=21;
    public static final int DEFAULT_BODY=22;
    public static final int DEFAULT_STMT=23;
    public static final int DIGIT=24;
    public static final int DOT=25;
    public static final int ENCODE=26;
    public static final int ENUM=27;
    public static final int ENUM_PREFIX=28;
    public static final int ESC=29;
    public static final int EXC_TYPE=30;
    public static final int EXPR=31;
    public static final int EXPR_ADD=32;
    public static final int EXPR_AND=33;
    public static final int EXPR_AND_AND=34;
    public static final int EXPR_ASSIGN=35;
    public static final int EXPR_COND=36;
    public static final int EXPR_EQ=37;
    public static final int EXPR_FULL=38;
    public static final int EXPR_MOV=39;
    public static final int EXPR_MULT=40;
    public static final int EXPR_NOT=41;
    public static final int EXPR_OR=42;
    public static final int EXPR_OR_OR=43;
    public static final int EXPR_QUESTION=44;
    public static final int EXPR_UNNAME=45;
    public static final int EXPR_XOR=46;
    public static final int EXTERN=47;
    public static final int FIELD=48;
    public static final int FIELD_ACCESS=49;
    public static final int FIELD_TYPE_STARTED=50;
    public static final int FINALLY_BLOCK=51;
    public static final int FOR_IN_STMT=52;
    public static final int FOR_STMT=53;
    public static final int FOR_STMT_EXPR=54;
    public static final int FUNCTION=55;
    public static final int GENERIC=56;
    public static final int GOTO=57;
    public static final int ID=58;
    public static final int IF_BLOCK=59;
    public static final int IF_EXPR=60;
    public static final int IF_STMT=61;
    public static final int IMPLEMENTATION=62;
    public static final int INCOMPLETE_PREFIX=63;
    public static final int INDEX=64;
    public static final int INDEX_NUMBER=65;
    public static final int INTERFACE=66;
    public static final int LETTER=67;
    public static final int L_AND=68;
    public static final int L_AND_AND=69;
    public static final int L_AND_EQ=70;
    public static final int L_BR=71;
    public static final int L_BR_TOKEN=72;
    public static final int L_DIV=73;
    public static final int L_DIV_EQ=74;
    public static final int L_EQ=75;
    public static final int L_EQ_EQ=76;
    public static final int L_FBR=77;
    public static final int L_KBR=78;
    public static final int L_LEFT=79;
    public static final int L_LEFT_EQ=80;
    public static final int L_LESS=81;
    public static final int L_LESS_EQ=82;
    public static final int L_MINUS=83;
    public static final int L_MINUS_EQ=84;
    public static final int L_MINUS_MINUS=85;
    public static final int L_MORE=86;
    public static final int L_MORE_EQ=87;
    public static final int L_MULT_EQ=88;
    public static final int L_NEQ=89;
    public static final int L_NOT=90;
    public static final int L_OR=91;
    public static final int L_OR_EQ=92;
    public static final int L_OR_OR=93;
    public static final int L_PERC=94;
    public static final int L_PERC_EQ=95;
    public static final int L_PLUS=96;
    public static final int L_PLUS_EQ=97;
    public static final int L_PLUS_PLUS=98;
    public static final int L_QUESTION=99;
    public static final int L_RIGHT=100;
    public static final int L_RIGHT_EQ=101;
    public static final int L_TILDA=102;
    public static final int L_XOR=103;
    public static final int L_XOR_EQ=104;
    public static final int MESSAGE=105;
    public static final int METHOD=106;
    public static final int METHOD_CALL=107;
    public static final int METHOD_MSG=108;
    public static final int METHOD_NAME=109;
    public static final int MODIFIER=110;
    public static final int MSG_LIST=111;
    public static final int MULTI_COMMENT=112;
    public static final int M_IMPORT=113;
    public static final int M_TYPE_START=114;
    public static final int NAME=115;
    public static final int NOT=116;
    public static final int NUMBER=117;
    public static final int OBJECT=118;
    public static final int OP=119;
    public static final int OPER=120;
    public static final int OPERATOR=121;
    public static final int PARAM=122;
    public static final int PREFIX=123;
    public static final int PREPROCESSOR_DECLARATION=124;
    public static final int PROTOCOL=125;
    public static final int RETURN_STMT=126;
    public static final int R_BR=127;
    public static final int R_FBR=128;
    public static final int R_KBR=129;
    public static final int SELECTOR=130;
    public static final int SELECTOR_VALUE=131;
    public static final int SEMICOLON=132;
    public static final int SIMPLE_EXPR=133;
    public static final int SINGLE_COMMENT=134;
    public static final int SINGLE_OP=135;
    public static final int SIZEOF=136;
    public static final int STATIC=137;
    public static final int STATIC_METHOD=138;
    public static final int STATIC_PREFIX=139;
    public static final int STATIC_START=140;
    public static final int STATIC_TYPE=141;
    public static final int STRING=142;
    public static final int STRING_LITERAL=143;
    public static final int STRING_LITERAL2=144;
    public static final int STRING_LITERAL3=145;
    public static final int STRUCT_FIELD=146;
    public static final int STRUCT_INIT=147;
    public static final int STRUCT_PREFIX=148;
    public static final int STRUCT_VARIABLE=149;
    public static final int SUPER_CLASS=150;
    public static final int SWITCH=151;
    public static final int SWITCH_BODY=152;
    public static final int SWITCH_EXPRESSION=153;
    public static final int THROW_EXCEPTION=154;
    public static final int THROW_STMT=155;
    public static final int TRY_STMT=156;
    public static final int TYPE=157;
    public static final int TYPEDEF=158;
    public static final int TYPEDEF_ELEMENT=159;
    public static final int TYPEDEF_STRUCT=160;
    public static final int TYPE_CONVERTION=161;
    public static final int TYPE_CONVERTION2=162;
    public static final int TYPE_RENAME=163;
    public static final int VALUE=164;
    public static final int VARIABLE_INIT=165;
    public static final int VA_ARGS=166;
    public static final int VOID=167;
    public static final int WHILE_EXPR=168;
    public static final int WHILE_STMT=169;
    public static final int WS=170;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public ObjcmParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public ObjcmParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

protected TreeAdaptor adaptor = new CommonTreeAdaptor();

public void setTreeAdaptor(TreeAdaptor adaptor) {
    this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
    return adaptor;
}
    public String[] getTokenNames() { return ObjcmParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g"; }


    public static class code_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "code"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:125:1: code : ( code_internal )* ;
    public final ObjcmParser.code_return code() throws RecognitionException {
        ObjcmParser.code_return retval = new ObjcmParser.code_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.code_internal_return code_internal1 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:125:6: ( ( code_internal )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:126:3: ( code_internal )*
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:126:3: ( code_internal )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==CONST_PREFIX||LA1_0==ENUM_PREFIX||LA1_0==ID||LA1_0==STATIC_PREFIX||LA1_0==STRUCT_PREFIX||LA1_0==VOID||(LA1_0 >= 178 && LA1_0 <= 179)||LA1_0==198||LA1_0==208||LA1_0==210) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:126:3: code_internal
            	    {
            	    pushFollow(FOLLOW_code_internal_in_code471);
            	    code_internal1=code_internal();

            	    state._fsp--;

            	    adaptor.addChild(root_0, code_internal1.getTree());

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "code"


    public static class code_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "code_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:130:1: code_internal : ( operator_wrapper | implementation_wrapper );
    public final ObjcmParser.code_internal_return code_internal() throws RecognitionException {
        ObjcmParser.code_internal_return retval = new ObjcmParser.code_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.operator_wrapper_return operator_wrapper2 =null;

        ObjcmParser.implementation_wrapper_return implementation_wrapper3 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:131:2: ( operator_wrapper | implementation_wrapper )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==CONST_PREFIX||LA2_0==ENUM_PREFIX||LA2_0==ID||LA2_0==STATIC_PREFIX||LA2_0==STRUCT_PREFIX||LA2_0==VOID||LA2_0==179||LA2_0==198||LA2_0==208||LA2_0==210) ) {
                alt2=1;
            }
            else if ( (LA2_0==178) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;

            }
            switch (alt2) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:131:4: operator_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_operator_wrapper_in_code_internal485);
                    operator_wrapper2=operator_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, operator_wrapper2.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:132:5: implementation_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_implementation_wrapper_in_code_internal491);
                    implementation_wrapper3=implementation_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, implementation_wrapper3.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "code_internal"


    public static class operator_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "operator_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:135:1: operator_wrapper : operator -> ^( OPERATOR operator ) ;
    public final ObjcmParser.operator_wrapper_return operator_wrapper() throws RecognitionException {
        ObjcmParser.operator_wrapper_return retval = new ObjcmParser.operator_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.operator_return operator4 =null;


        RewriteRuleSubtreeStream stream_operator=new RewriteRuleSubtreeStream(adaptor,"rule operator");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:136:2: ( operator -> ^( OPERATOR operator ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:136:4: operator
            {
            pushFollow(FOLLOW_operator_in_operator_wrapper502);
            operator4=operator();

            state._fsp--;

            stream_operator.add(operator4.getTree());

            // AST REWRITE
            // elements: operator
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 136:13: -> ^( OPERATOR operator )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:136:16: ^( OPERATOR operator )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(OPERATOR, "OPERATOR")
                , root_1);

                adaptor.addChild(root_1, stream_operator.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "operator_wrapper"


    public static class operator_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "operator"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:138:1: operator : ( extern_wrapper | static_section_wrapper | type_start_wrapper | interface_declaration_wrapper | typedef_struct_declaration_wrapper | typedef_declaration_wrapper | typedef );
    public final ObjcmParser.operator_return operator() throws RecognitionException {
        ObjcmParser.operator_return retval = new ObjcmParser.operator_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.extern_wrapper_return extern_wrapper5 =null;

        ObjcmParser.static_section_wrapper_return static_section_wrapper6 =null;

        ObjcmParser.type_start_wrapper_return type_start_wrapper7 =null;

        ObjcmParser.interface_declaration_wrapper_return interface_declaration_wrapper8 =null;

        ObjcmParser.typedef_struct_declaration_wrapper_return typedef_struct_declaration_wrapper9 =null;

        ObjcmParser.typedef_declaration_wrapper_return typedef_declaration_wrapper10 =null;

        ObjcmParser.typedef_return typedef11 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:139:2: ( extern_wrapper | static_section_wrapper | type_start_wrapper | interface_declaration_wrapper | typedef_struct_declaration_wrapper | typedef_declaration_wrapper | typedef )
            int alt3=7;
            switch ( input.LA(1) ) {
            case 198:
                {
                alt3=1;
                }
                break;
            case STATIC_PREFIX:
                {
                alt3=2;
                }
                break;
            case CONST_PREFIX:
            case ID:
            case VOID:
            case 210:
                {
                alt3=3;
                }
                break;
            case 179:
                {
                alt3=4;
                }
                break;
            case STRUCT_PREFIX:
                {
                alt3=5;
                }
                break;
            case ENUM_PREFIX:
                {
                alt3=6;
                }
                break;
            case 208:
                {
                alt3=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;

            }

            switch (alt3) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:139:4: extern_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_extern_wrapper_in_operator520);
                    extern_wrapper5=extern_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, extern_wrapper5.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:140:4: static_section_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_static_section_wrapper_in_operator526);
                    static_section_wrapper6=static_section_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, static_section_wrapper6.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:141:4: type_start_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_type_start_wrapper_in_operator531);
                    type_start_wrapper7=type_start_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, type_start_wrapper7.getTree());

                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:142:5: interface_declaration_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_interface_declaration_wrapper_in_operator538);
                    interface_declaration_wrapper8=interface_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, interface_declaration_wrapper8.getTree());

                    }
                    break;
                case 5 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:143:4: typedef_struct_declaration_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typedef_struct_declaration_wrapper_in_operator544);
                    typedef_struct_declaration_wrapper9=typedef_struct_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef_struct_declaration_wrapper9.getTree());

                    }
                    break;
                case 6 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:144:4: typedef_declaration_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typedef_declaration_wrapper_in_operator549);
                    typedef_declaration_wrapper10=typedef_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef_declaration_wrapper10.getTree());

                    }
                    break;
                case 7 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:145:4: typedef
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typedef_in_operator554);
                    typedef11=typedef();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef11.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "operator"


    public static class extern_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "extern_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:152:2: extern_wrapper : extern -> ^( EXTERN ) ;
    public final ObjcmParser.extern_wrapper_return extern_wrapper() throws RecognitionException {
        ObjcmParser.extern_wrapper_return retval = new ObjcmParser.extern_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.extern_return extern12 =null;


        RewriteRuleSubtreeStream stream_extern=new RewriteRuleSubtreeStream(adaptor,"rule extern");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:153:3: ( extern -> ^( EXTERN ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:153:5: extern
            {
            pushFollow(FOLLOW_extern_in_extern_wrapper572);
            extern12=extern();

            state._fsp--;

            stream_extern.add(extern12.getTree());

            // AST REWRITE
            // elements: 
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 153:12: -> ^( EXTERN )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:153:15: ^( EXTERN )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXTERN, "EXTERN")
                , root_1);

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "extern_wrapper"


    public static class extern_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "extern"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:156:2: extern : 'extern' '\"C\"' L_FBR ~ ( R_FBR ) R_FBR ;
    public final ObjcmParser.extern_return extern() throws RecognitionException {
        ObjcmParser.extern_return retval = new ObjcmParser.extern_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal13=null;
        Token string_literal14=null;
        Token L_FBR15=null;
        Token set16=null;
        Token R_FBR17=null;

        Object string_literal13_tree=null;
        Object string_literal14_tree=null;
        Object L_FBR15_tree=null;
        Object set16_tree=null;
        Object R_FBR17_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:156:9: ( 'extern' '\"C\"' L_FBR ~ ( R_FBR ) R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:156:11: 'extern' '\"C\"' L_FBR ~ ( R_FBR ) R_FBR
            {
            root_0 = (Object)adaptor.nil();


            string_literal13=(Token)match(input,198,FOLLOW_198_in_extern591); 
            string_literal13_tree = 
            (Object)adaptor.create(string_literal13)
            ;
            adaptor.addChild(root_0, string_literal13_tree);


            string_literal14=(Token)match(input,171,FOLLOW_171_in_extern594); 
            string_literal14_tree = 
            (Object)adaptor.create(string_literal14)
            ;
            adaptor.addChild(root_0, string_literal14_tree);


            L_FBR15=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_extern597); 
            L_FBR15_tree = 
            (Object)adaptor.create(L_FBR15)
            ;
            adaptor.addChild(root_0, L_FBR15_tree);


            set16=(Token)input.LT(1);

            if ( (input.LA(1) >= ARRAY_INIT && input.LA(1) <= R_BR)||(input.LA(1) >= R_KBR && input.LA(1) <= 211) ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set16)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            R_FBR17=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_extern604); 
            R_FBR17_tree = 
            (Object)adaptor.create(R_FBR17)
            ;
            adaptor.addChild(root_0, R_FBR17_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "extern"


    public static class implementation_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:158:1: implementation_wrapper : implementation -> ^( IMPLEMENTATION implementation ) ;
    public final ObjcmParser.implementation_wrapper_return implementation_wrapper() throws RecognitionException {
        ObjcmParser.implementation_wrapper_return retval = new ObjcmParser.implementation_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.implementation_return implementation18 =null;


        RewriteRuleSubtreeStream stream_implementation=new RewriteRuleSubtreeStream(adaptor,"rule implementation");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:159:3: ( implementation -> ^( IMPLEMENTATION implementation ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:159:5: implementation
            {
            pushFollow(FOLLOW_implementation_in_implementation_wrapper616);
            implementation18=implementation();

            state._fsp--;

            stream_implementation.add(implementation18.getTree());

            // AST REWRITE
            // elements: implementation
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 159:20: -> ^( IMPLEMENTATION implementation )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:159:23: ^( IMPLEMENTATION implementation )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(IMPLEMENTATION, "IMPLEMENTATION")
                , root_1);

                adaptor.addChild(root_1, stream_implementation.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_wrapper"


    public static class implementation_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:161:1: implementation : '@implementation' name ( category )? ( super_class )? ( implementation_body )* '@end' ( SEMICOLON )? ;
    public final ObjcmParser.implementation_return implementation() throws RecognitionException {
        ObjcmParser.implementation_return retval = new ObjcmParser.implementation_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal19=null;
        Token string_literal24=null;
        Token SEMICOLON25=null;
        ObjcmParser.name_return name20 =null;

        ObjcmParser.category_return category21 =null;

        ObjcmParser.super_class_return super_class22 =null;

        ObjcmParser.implementation_body_return implementation_body23 =null;


        Object string_literal19_tree=null;
        Object string_literal24_tree=null;
        Object SEMICOLON25_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:2: ( '@implementation' name ( category )? ( super_class )? ( implementation_body )* '@end' ( SEMICOLON )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:4: '@implementation' name ( category )? ( super_class )? ( implementation_body )* '@end' ( SEMICOLON )?
            {
            root_0 = (Object)adaptor.nil();


            string_literal19=(Token)match(input,178,FOLLOW_178_in_implementation635); 
            string_literal19_tree = 
            (Object)adaptor.create(string_literal19)
            ;
            adaptor.addChild(root_0, string_literal19_tree);


            pushFollow(FOLLOW_name_in_implementation638);
            name20=name();

            state._fsp--;

            adaptor.addChild(root_0, name20.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:29: ( category )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==L_BR) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:29: category
                    {
                    pushFollow(FOLLOW_category_in_implementation641);
                    category21=category();

                    state._fsp--;

                    adaptor.addChild(root_0, category21.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:39: ( super_class )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==COLON) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:162:39: super_class
                    {
                    pushFollow(FOLLOW_super_class_in_implementation644);
                    super_class22=super_class();

                    state._fsp--;

                    adaptor.addChild(root_0, super_class22.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:163:3: ( implementation_body )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==ID||LA6_0==L_MINUS||LA6_0==L_PLUS||LA6_0==STATIC_PREFIX||LA6_0==STRUCT_PREFIX||LA6_0==VOID||LA6_0==185||LA6_0==198||LA6_0==208||LA6_0==210) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:163:3: implementation_body
            	    {
            	    pushFollow(FOLLOW_implementation_body_in_implementation649);
            	    implementation_body23=implementation_body();

            	    state._fsp--;

            	    adaptor.addChild(root_0, implementation_body23.getTree());

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            string_literal24=(Token)match(input,176,FOLLOW_176_in_implementation654); 
            string_literal24_tree = 
            (Object)adaptor.create(string_literal24)
            ;
            adaptor.addChild(root_0, string_literal24_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:164:11: ( SEMICOLON )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==SEMICOLON) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:164:11: SEMICOLON
                    {
                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_implementation657); 
                    SEMICOLON25_tree = 
                    (Object)adaptor.create(SEMICOLON25)
                    ;
                    adaptor.addChild(root_0, SEMICOLON25_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation"


    public static class category_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "category"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:167:1: category : L_BR name R_BR -> ^( CATEGORY name ) ;
    public final ObjcmParser.category_return category() throws RecognitionException {
        ObjcmParser.category_return retval = new ObjcmParser.category_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR26=null;
        Token R_BR28=null;
        ObjcmParser.name_return name27 =null;


        Object L_BR26_tree=null;
        Object R_BR28_tree=null;
        RewriteRuleTokenStream stream_L_BR=new RewriteRuleTokenStream(adaptor,"token L_BR");
        RewriteRuleTokenStream stream_R_BR=new RewriteRuleTokenStream(adaptor,"token R_BR");
        RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"rule name");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:167:9: ( L_BR name R_BR -> ^( CATEGORY name ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:167:11: L_BR name R_BR
            {
            L_BR26=(Token)match(input,L_BR,FOLLOW_L_BR_in_category669);  
            stream_L_BR.add(L_BR26);


            pushFollow(FOLLOW_name_in_category672);
            name27=name();

            state._fsp--;

            stream_name.add(name27.getTree());

            R_BR28=(Token)match(input,R_BR,FOLLOW_R_BR_in_category675);  
            stream_R_BR.add(R_BR28);


            // AST REWRITE
            // elements: name
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 167:28: -> ^( CATEGORY name )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:167:31: ^( CATEGORY name )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CATEGORY, "CATEGORY")
                , root_1);

                adaptor.addChild(root_1, stream_name.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "category"


    public static class implementation_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:169:1: implementation_body : ( directives | typedef | static_section_wrapper | implementation_method_wrapper | field_type_started_wrapper | field_declaration_wrapper | typedef_struct_declaration_wrapper );
    public final ObjcmParser.implementation_body_return implementation_body() throws RecognitionException {
        ObjcmParser.implementation_body_return retval = new ObjcmParser.implementation_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.directives_return directives29 =null;

        ObjcmParser.typedef_return typedef30 =null;

        ObjcmParser.static_section_wrapper_return static_section_wrapper31 =null;

        ObjcmParser.implementation_method_wrapper_return implementation_method_wrapper32 =null;

        ObjcmParser.field_type_started_wrapper_return field_type_started_wrapper33 =null;

        ObjcmParser.field_declaration_wrapper_return field_declaration_wrapper34 =null;

        ObjcmParser.typedef_struct_declaration_wrapper_return typedef_struct_declaration_wrapper35 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:170:2: ( directives | typedef | static_section_wrapper | implementation_method_wrapper | field_type_started_wrapper | field_declaration_wrapper | typedef_struct_declaration_wrapper )
            int alt8=7;
            switch ( input.LA(1) ) {
            case 185:
                {
                alt8=1;
                }
                break;
            case 208:
                {
                alt8=2;
                }
                break;
            case STATIC_PREFIX:
                {
                alt8=3;
                }
                break;
            case L_MINUS:
            case L_PLUS:
                {
                alt8=4;
                }
                break;
            case ID:
            case VOID:
            case 210:
                {
                alt8=5;
                }
                break;
            case 198:
                {
                alt8=6;
                }
                break;
            case STRUCT_PREFIX:
                {
                alt8=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;

            }

            switch (alt8) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:170:4: directives
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_directives_in_implementation_body693);
                    directives29=directives();

                    state._fsp--;

                    adaptor.addChild(root_0, directives29.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:171:5: typedef
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typedef_in_implementation_body699);
                    typedef30=typedef();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef30.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:172:5: static_section_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_static_section_wrapper_in_implementation_body705);
                    static_section_wrapper31=static_section_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, static_section_wrapper31.getTree());

                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:173:5: implementation_method_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_implementation_method_wrapper_in_implementation_body711);
                    implementation_method_wrapper32=implementation_method_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, implementation_method_wrapper32.getTree());

                    }
                    break;
                case 5 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:175:4: field_type_started_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_field_type_started_wrapper_in_implementation_body717);
                    field_type_started_wrapper33=field_type_started_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, field_type_started_wrapper33.getTree());

                    }
                    break;
                case 6 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:176:5: field_declaration_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_field_declaration_wrapper_in_implementation_body723);
                    field_declaration_wrapper34=field_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, field_declaration_wrapper34.getTree());

                    }
                    break;
                case 7 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:177:4: typedef_struct_declaration_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typedef_struct_declaration_wrapper_in_implementation_body728);
                    typedef_struct_declaration_wrapper35=typedef_struct_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef_struct_declaration_wrapper35.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_body"


    public static class directives_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "directives"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:180:1: directives : synthesize ;
    public final ObjcmParser.directives_return directives() throws RecognitionException {
        ObjcmParser.directives_return retval = new ObjcmParser.directives_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.synthesize_return synthesize36 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:181:2: ( synthesize )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:181:4: synthesize
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_synthesize_in_directives739);
            synthesize36=synthesize();

            state._fsp--;

            adaptor.addChild(root_0, synthesize36.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "directives"


    public static class synthesize_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "synthesize"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:184:1: synthesize : '@synthesize' ID ( L_EQ ID )? ( COMMA ID ( L_EQ ID )? )* SEMICOLON ;
    public final ObjcmParser.synthesize_return synthesize() throws RecognitionException {
        ObjcmParser.synthesize_return retval = new ObjcmParser.synthesize_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal37=null;
        Token ID38=null;
        Token L_EQ39=null;
        Token ID40=null;
        Token COMMA41=null;
        Token ID42=null;
        Token L_EQ43=null;
        Token ID44=null;
        Token SEMICOLON45=null;

        Object string_literal37_tree=null;
        Object ID38_tree=null;
        Object L_EQ39_tree=null;
        Object ID40_tree=null;
        Object COMMA41_tree=null;
        Object ID42_tree=null;
        Object L_EQ43_tree=null;
        Object ID44_tree=null;
        Object SEMICOLON45_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:2: ( '@synthesize' ID ( L_EQ ID )? ( COMMA ID ( L_EQ ID )? )* SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:4: '@synthesize' ID ( L_EQ ID )? ( COMMA ID ( L_EQ ID )? )* SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            string_literal37=(Token)match(input,185,FOLLOW_185_in_synthesize752); 
            string_literal37_tree = 
            (Object)adaptor.create(string_literal37)
            ;
            adaptor.addChild(root_0, string_literal37_tree);


            ID38=(Token)match(input,ID,FOLLOW_ID_in_synthesize755); 
            ID38_tree = 
            (Object)adaptor.create(ID38)
            ;
            adaptor.addChild(root_0, ID38_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:22: ( L_EQ ID )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==L_EQ) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:23: L_EQ ID
                    {
                    L_EQ39=(Token)match(input,L_EQ,FOLLOW_L_EQ_in_synthesize758); 
                    L_EQ39_tree = 
                    (Object)adaptor.create(L_EQ39)
                    ;
                    adaptor.addChild(root_0, L_EQ39_tree);


                    ID40=(Token)match(input,ID,FOLLOW_ID_in_synthesize760); 
                    ID40_tree = 
                    (Object)adaptor.create(ID40)
                    ;
                    adaptor.addChild(root_0, ID40_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:33: ( COMMA ID ( L_EQ ID )? )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==COMMA) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:34: COMMA ID ( L_EQ ID )?
            	    {
            	    COMMA41=(Token)match(input,COMMA,FOLLOW_COMMA_in_synthesize765); 
            	    COMMA41_tree = 
            	    (Object)adaptor.create(COMMA41)
            	    ;
            	    adaptor.addChild(root_0, COMMA41_tree);


            	    ID42=(Token)match(input,ID,FOLLOW_ID_in_synthesize767); 
            	    ID42_tree = 
            	    (Object)adaptor.create(ID42)
            	    ;
            	    adaptor.addChild(root_0, ID42_tree);


            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:43: ( L_EQ ID )?
            	    int alt10=2;
            	    int LA10_0 = input.LA(1);

            	    if ( (LA10_0==L_EQ) ) {
            	        alt10=1;
            	    }
            	    switch (alt10) {
            	        case 1 :
            	            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:185:44: L_EQ ID
            	            {
            	            L_EQ43=(Token)match(input,L_EQ,FOLLOW_L_EQ_in_synthesize770); 
            	            L_EQ43_tree = 
            	            (Object)adaptor.create(L_EQ43)
            	            ;
            	            adaptor.addChild(root_0, L_EQ43_tree);


            	            ID44=(Token)match(input,ID,FOLLOW_ID_in_synthesize772); 
            	            ID44_tree = 
            	            (Object)adaptor.create(ID44)
            	            ;
            	            adaptor.addChild(root_0, ID44_tree);


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);


            SEMICOLON45=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synthesize778); 
            SEMICOLON45_tree = 
            (Object)adaptor.create(SEMICOLON45)
            ;
            adaptor.addChild(root_0, SEMICOLON45_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "synthesize"


    public static class typedef_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:1: typedef : 'typedef' ( typedef_declaration_wrapper | typedef_struct_declaration_wrapper | type_rename_wrapper ) ;
    public final ObjcmParser.typedef_return typedef() throws RecognitionException {
        ObjcmParser.typedef_return retval = new ObjcmParser.typedef_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal46=null;
        ObjcmParser.typedef_declaration_wrapper_return typedef_declaration_wrapper47 =null;

        ObjcmParser.typedef_struct_declaration_wrapper_return typedef_struct_declaration_wrapper48 =null;

        ObjcmParser.type_rename_wrapper_return type_rename_wrapper49 =null;


        Object string_literal46_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:9: ( 'typedef' ( typedef_declaration_wrapper | typedef_struct_declaration_wrapper | type_rename_wrapper ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:11: 'typedef' ( typedef_declaration_wrapper | typedef_struct_declaration_wrapper | type_rename_wrapper )
            {
            root_0 = (Object)adaptor.nil();


            string_literal46=(Token)match(input,208,FOLLOW_208_in_typedef790); 
            string_literal46_tree = 
            (Object)adaptor.create(string_literal46)
            ;
            adaptor.addChild(root_0, string_literal46_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:22: ( typedef_declaration_wrapper | typedef_struct_declaration_wrapper | type_rename_wrapper )
            int alt12=3;
            switch ( input.LA(1) ) {
            case ENUM_PREFIX:
                {
                alt12=1;
                }
                break;
            case STRUCT_PREFIX:
                {
                alt12=2;
                }
                break;
            case ID:
                {
                alt12=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;

            }

            switch (alt12) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:23: typedef_declaration_wrapper
                    {
                    pushFollow(FOLLOW_typedef_declaration_wrapper_in_typedef794);
                    typedef_declaration_wrapper47=typedef_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef_declaration_wrapper47.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:53: typedef_struct_declaration_wrapper
                    {
                    pushFollow(FOLLOW_typedef_struct_declaration_wrapper_in_typedef798);
                    typedef_struct_declaration_wrapper48=typedef_struct_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, typedef_struct_declaration_wrapper48.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:188:90: type_rename_wrapper
                    {
                    pushFollow(FOLLOW_type_rename_wrapper_in_typedef802);
                    type_rename_wrapper49=type_rename_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, type_rename_wrapper49.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef"


    public static class type_rename_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_rename_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:191:1: type_rename_wrapper : type_rename -> ^( TYPE_RENAME type_rename ) ;
    public final ObjcmParser.type_rename_wrapper_return type_rename_wrapper() throws RecognitionException {
        ObjcmParser.type_rename_wrapper_return retval = new ObjcmParser.type_rename_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.type_rename_return type_rename50 =null;


        RewriteRuleSubtreeStream stream_type_rename=new RewriteRuleSubtreeStream(adaptor,"rule type_rename");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:192:2: ( type_rename -> ^( TYPE_RENAME type_rename ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:192:4: type_rename
            {
            pushFollow(FOLLOW_type_rename_in_type_rename_wrapper816);
            type_rename50=type_rename();

            state._fsp--;

            stream_type_rename.add(type_rename50.getTree());

            // AST REWRITE
            // elements: type_rename
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 192:16: -> ^( TYPE_RENAME type_rename )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:192:19: ^( TYPE_RENAME type_rename )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPE_RENAME, "TYPE_RENAME")
                , root_1);

                adaptor.addChild(root_1, stream_type_rename.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_rename_wrapper"


    public static class type_rename_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_rename"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:194:1: type_rename : ID ID SEMICOLON ;
    public final ObjcmParser.type_rename_return type_rename() throws RecognitionException {
        ObjcmParser.type_rename_return retval = new ObjcmParser.type_rename_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID51=null;
        Token ID52=null;
        Token SEMICOLON53=null;

        Object ID51_tree=null;
        Object ID52_tree=null;
        Object SEMICOLON53_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:195:2: ( ID ID SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:195:4: ID ID SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            ID51=(Token)match(input,ID,FOLLOW_ID_in_type_rename835); 
            ID51_tree = 
            (Object)adaptor.create(ID51)
            ;
            adaptor.addChild(root_0, ID51_tree);


            ID52=(Token)match(input,ID,FOLLOW_ID_in_type_rename837); 
            ID52_tree = 
            (Object)adaptor.create(ID52)
            ;
            adaptor.addChild(root_0, ID52_tree);


            SEMICOLON53=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_type_rename839); 
            SEMICOLON53_tree = 
            (Object)adaptor.create(SEMICOLON53)
            ;
            adaptor.addChild(root_0, SEMICOLON53_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_rename"


    public static class static_section_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_section_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:197:1: static_section_wrapper : static_section -> ^( STATIC static_section ) ;
    public final ObjcmParser.static_section_wrapper_return static_section_wrapper() throws RecognitionException {
        ObjcmParser.static_section_wrapper_return retval = new ObjcmParser.static_section_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.static_section_return static_section54 =null;


        RewriteRuleSubtreeStream stream_static_section=new RewriteRuleSubtreeStream(adaptor,"rule static_section");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:198:2: ( static_section -> ^( STATIC static_section ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:198:4: static_section
            {
            pushFollow(FOLLOW_static_section_in_static_section_wrapper851);
            static_section54=static_section();

            state._fsp--;

            stream_static_section.add(static_section54.getTree());

            // AST REWRITE
            // elements: static_section
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 198:19: -> ^( STATIC static_section )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:198:22: ^( STATIC static_section )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STATIC, "STATIC")
                , root_1);

                adaptor.addChild(root_1, stream_static_section.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_section_wrapper"


    public static class static_section_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_section"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:200:1: static_section : STATIC_PREFIX ( CONST_PREFIX )? ( STRUCT_PREFIX )? ( ENUM_PREFIX )? static_section2 ;
    public final ObjcmParser.static_section_return static_section() throws RecognitionException {
        ObjcmParser.static_section_return retval = new ObjcmParser.static_section_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STATIC_PREFIX55=null;
        Token CONST_PREFIX56=null;
        Token STRUCT_PREFIX57=null;
        Token ENUM_PREFIX58=null;
        ObjcmParser.static_section2_return static_section259 =null;


        Object STATIC_PREFIX55_tree=null;
        Object CONST_PREFIX56_tree=null;
        Object STRUCT_PREFIX57_tree=null;
        Object ENUM_PREFIX58_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:2: ( STATIC_PREFIX ( CONST_PREFIX )? ( STRUCT_PREFIX )? ( ENUM_PREFIX )? static_section2 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:5: STATIC_PREFIX ( CONST_PREFIX )? ( STRUCT_PREFIX )? ( ENUM_PREFIX )? static_section2
            {
            root_0 = (Object)adaptor.nil();


            STATIC_PREFIX55=(Token)match(input,STATIC_PREFIX,FOLLOW_STATIC_PREFIX_in_static_section873); 
            STATIC_PREFIX55_tree = 
            (Object)adaptor.create(STATIC_PREFIX55)
            ;
            adaptor.addChild(root_0, STATIC_PREFIX55_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:19: ( CONST_PREFIX )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==CONST_PREFIX) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:19: CONST_PREFIX
                    {
                    CONST_PREFIX56=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_static_section875); 
                    CONST_PREFIX56_tree = 
                    (Object)adaptor.create(CONST_PREFIX56)
                    ;
                    adaptor.addChild(root_0, CONST_PREFIX56_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:33: ( STRUCT_PREFIX )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==STRUCT_PREFIX) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:33: STRUCT_PREFIX
                    {
                    STRUCT_PREFIX57=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_static_section878); 
                    STRUCT_PREFIX57_tree = 
                    (Object)adaptor.create(STRUCT_PREFIX57)
                    ;
                    adaptor.addChild(root_0, STRUCT_PREFIX57_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:48: ( ENUM_PREFIX )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==ENUM_PREFIX) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:202:48: ENUM_PREFIX
                    {
                    ENUM_PREFIX58=(Token)match(input,ENUM_PREFIX,FOLLOW_ENUM_PREFIX_in_static_section881); 
                    ENUM_PREFIX58_tree = 
                    (Object)adaptor.create(ENUM_PREFIX58)
                    ;
                    adaptor.addChild(root_0, ENUM_PREFIX58_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_static_section2_in_static_section884);
            static_section259=static_section2();

            state._fsp--;

            adaptor.addChild(root_0, static_section259.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_section"


    public static class static_section2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_section2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:204:1: static_section2 : ( inline_section | implementation_method_wrapper2 | static_section3 );
    public final ObjcmParser.static_section2_return static_section2() throws RecognitionException {
        ObjcmParser.static_section2_return retval = new ObjcmParser.static_section2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.inline_section_return inline_section60 =null;

        ObjcmParser.implementation_method_wrapper2_return implementation_method_wrapper261 =null;

        ObjcmParser.static_section3_return static_section362 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:205:2: ( inline_section | implementation_method_wrapper2 | static_section3 )
            int alt16=3;
            switch ( input.LA(1) ) {
            case 203:
                {
                alt16=1;
                }
                break;
            case L_FBR:
            case SEMICOLON:
                {
                alt16=2;
                }
                break;
            case ID:
            case VOID:
            case 210:
                {
                alt16=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;

            }

            switch (alt16) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:205:4: inline_section
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_inline_section_in_static_section2893);
                    inline_section60=inline_section();

                    state._fsp--;

                    adaptor.addChild(root_0, inline_section60.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:206:5: implementation_method_wrapper2
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_implementation_method_wrapper2_in_static_section2900);
                    implementation_method_wrapper261=implementation_method_wrapper2();

                    state._fsp--;

                    adaptor.addChild(root_0, implementation_method_wrapper261.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:207:5: static_section3
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_static_section3_in_static_section2907);
                    static_section362=static_section3();

                    state._fsp--;

                    adaptor.addChild(root_0, static_section362.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_section2"


    public static class inline_section_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "inline_section"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:210:1: inline_section : 'inline' ( ENUM_PREFIX )? field_type name ( method_params2 )? ( block_wrapper | SEMICOLON ) ;
    public final ObjcmParser.inline_section_return inline_section() throws RecognitionException {
        ObjcmParser.inline_section_return retval = new ObjcmParser.inline_section_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal63=null;
        Token ENUM_PREFIX64=null;
        Token SEMICOLON69=null;
        ObjcmParser.field_type_return field_type65 =null;

        ObjcmParser.name_return name66 =null;

        ObjcmParser.method_params2_return method_params267 =null;

        ObjcmParser.block_wrapper_return block_wrapper68 =null;


        Object string_literal63_tree=null;
        Object ENUM_PREFIX64_tree=null;
        Object SEMICOLON69_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:2: ( 'inline' ( ENUM_PREFIX )? field_type name ( method_params2 )? ( block_wrapper | SEMICOLON ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:4: 'inline' ( ENUM_PREFIX )? field_type name ( method_params2 )? ( block_wrapper | SEMICOLON )
            {
            root_0 = (Object)adaptor.nil();


            string_literal63=(Token)match(input,203,FOLLOW_203_in_inline_section919); 
            string_literal63_tree = 
            (Object)adaptor.create(string_literal63)
            ;
            adaptor.addChild(root_0, string_literal63_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:13: ( ENUM_PREFIX )?
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==ENUM_PREFIX) ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:13: ENUM_PREFIX
                    {
                    ENUM_PREFIX64=(Token)match(input,ENUM_PREFIX,FOLLOW_ENUM_PREFIX_in_inline_section921); 
                    ENUM_PREFIX64_tree = 
                    (Object)adaptor.create(ENUM_PREFIX64)
                    ;
                    adaptor.addChild(root_0, ENUM_PREFIX64_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_field_type_in_inline_section924);
            field_type65=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type65.getTree());

            pushFollow(FOLLOW_name_in_inline_section926);
            name66=name();

            state._fsp--;

            adaptor.addChild(root_0, name66.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:43: ( method_params2 )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==L_BR) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:43: method_params2
                    {
                    pushFollow(FOLLOW_method_params2_in_inline_section929);
                    method_params267=method_params2();

                    state._fsp--;

                    adaptor.addChild(root_0, method_params267.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:59: ( block_wrapper | SEMICOLON )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==L_FBR) ) {
                alt19=1;
            }
            else if ( (LA19_0==SEMICOLON) ) {
                alt19=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;

            }
            switch (alt19) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:60: block_wrapper
                    {
                    pushFollow(FOLLOW_block_wrapper_in_inline_section933);
                    block_wrapper68=block_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, block_wrapper68.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:211:76: SEMICOLON
                    {
                    SEMICOLON69=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_inline_section937); 
                    SEMICOLON69_tree = 
                    (Object)adaptor.create(SEMICOLON69)
                    ;
                    adaptor.addChild(root_0, SEMICOLON69_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "inline_section"


    public static class static_section3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_section3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:213:1: static_section3 : field_type name ( indexed )* static_end ;
    public final ObjcmParser.static_section3_return static_section3() throws RecognitionException {
        ObjcmParser.static_section3_return retval = new ObjcmParser.static_section3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_type_return field_type70 =null;

        ObjcmParser.name_return name71 =null;

        ObjcmParser.indexed_return indexed72 =null;

        ObjcmParser.static_end_return static_end73 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:214:2: ( field_type name ( indexed )* static_end )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:214:4: field_type name ( indexed )* static_end
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_type_in_static_section3948);
            field_type70=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type70.getTree());

            pushFollow(FOLLOW_name_in_static_section3950);
            name71=name();

            state._fsp--;

            adaptor.addChild(root_0, name71.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:214:20: ( indexed )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==L_KBR) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:214:20: indexed
            	    {
            	    pushFollow(FOLLOW_indexed_in_static_section3952);
            	    indexed72=indexed();

            	    state._fsp--;

            	    adaptor.addChild(root_0, indexed72.getTree());

            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            pushFollow(FOLLOW_static_end_in_static_section3956);
            static_end73=static_end();

            state._fsp--;

            adaptor.addChild(root_0, static_end73.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_section3"


    public static class static_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:217:1: static_end : ( implementation_method_wrapper3 | field_end );
    public final ObjcmParser.static_end_return static_end() throws RecognitionException {
        ObjcmParser.static_end_return retval = new ObjcmParser.static_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.implementation_method_wrapper3_return implementation_method_wrapper374 =null;

        ObjcmParser.field_end_return field_end75 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:218:2: ( implementation_method_wrapper3 | field_end )
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==L_BR) ) {
                alt21=1;
            }
            else if ( (LA21_0==L_AND_EQ||(LA21_0 >= L_DIV_EQ && LA21_0 <= L_EQ)||LA21_0==L_LEFT_EQ||LA21_0==L_MINUS_EQ||LA21_0==L_MULT_EQ||LA21_0==L_OR_EQ||LA21_0==L_PERC_EQ||LA21_0==L_PLUS_EQ||LA21_0==L_RIGHT_EQ||LA21_0==L_XOR_EQ||LA21_0==SEMICOLON) ) {
                alt21=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;

            }
            switch (alt21) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:218:4: implementation_method_wrapper3
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_implementation_method_wrapper3_in_static_end968);
                    implementation_method_wrapper374=implementation_method_wrapper3();

                    state._fsp--;

                    adaptor.addChild(root_0, implementation_method_wrapper374.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:219:5: field_end
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_field_end_in_static_end974);
                    field_end75=field_end();

                    state._fsp--;

                    adaptor.addChild(root_0, field_end75.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_end"


    public static class field_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:221:1: field_end : field_end_internal -> ^( FIELD field_end_internal ) ;
    public final ObjcmParser.field_end_return field_end() throws RecognitionException {
        ObjcmParser.field_end_return retval = new ObjcmParser.field_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_end_internal_return field_end_internal76 =null;


        RewriteRuleSubtreeStream stream_field_end_internal=new RewriteRuleSubtreeStream(adaptor,"rule field_end_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:222:2: ( field_end_internal -> ^( FIELD field_end_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:222:4: field_end_internal
            {
            pushFollow(FOLLOW_field_end_internal_in_field_end985);
            field_end_internal76=field_end_internal();

            state._fsp--;

            stream_field_end_internal.add(field_end_internal76.getTree());

            // AST REWRITE
            // elements: field_end_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 222:23: -> ^( FIELD field_end_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:222:26: ^( FIELD field_end_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD, "FIELD")
                , root_1);

                adaptor.addChild(root_1, stream_field_end_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_end"


    public static class field_end_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_end_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:224:1: field_end_internal : ( expr_assign_wrapper )? SEMICOLON ;
    public final ObjcmParser.field_end_internal_return field_end_internal() throws RecognitionException {
        ObjcmParser.field_end_internal_return retval = new ObjcmParser.field_end_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON78=null;
        ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper77 =null;


        Object SEMICOLON78_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:225:2: ( ( expr_assign_wrapper )? SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:225:4: ( expr_assign_wrapper )? SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:225:4: ( expr_assign_wrapper )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==L_AND_EQ||(LA22_0 >= L_DIV_EQ && LA22_0 <= L_EQ)||LA22_0==L_LEFT_EQ||LA22_0==L_MINUS_EQ||LA22_0==L_MULT_EQ||LA22_0==L_OR_EQ||LA22_0==L_PERC_EQ||LA22_0==L_PLUS_EQ||LA22_0==L_RIGHT_EQ||LA22_0==L_XOR_EQ) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:225:4: expr_assign_wrapper
                    {
                    pushFollow(FOLLOW_expr_assign_wrapper_in_field_end_internal1003);
                    expr_assign_wrapper77=expr_assign_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_assign_wrapper77.getTree());

                    }
                    break;

            }


            SEMICOLON78=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_field_end_internal1006); 
            SEMICOLON78_tree = 
            (Object)adaptor.create(SEMICOLON78)
            ;
            adaptor.addChild(root_0, SEMICOLON78_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_end_internal"


    public static class implementation_method_wrapper3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method_wrapper3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:227:1: implementation_method_wrapper3 : implementation_method3 -> ^( METHOD implementation_method3 ) ;
    public final ObjcmParser.implementation_method_wrapper3_return implementation_method_wrapper3() throws RecognitionException {
        ObjcmParser.implementation_method_wrapper3_return retval = new ObjcmParser.implementation_method_wrapper3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.implementation_method3_return implementation_method379 =null;


        RewriteRuleSubtreeStream stream_implementation_method3=new RewriteRuleSubtreeStream(adaptor,"rule implementation_method3");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:228:2: ( implementation_method3 -> ^( METHOD implementation_method3 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:228:4: implementation_method3
            {
            pushFollow(FOLLOW_implementation_method3_in_implementation_method_wrapper31018);
            implementation_method379=implementation_method3();

            state._fsp--;

            stream_implementation_method3.add(implementation_method379.getTree());

            // AST REWRITE
            // elements: implementation_method3
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 228:27: -> ^( METHOD implementation_method3 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:228:30: ^( METHOD implementation_method3 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD, "METHOD")
                , root_1);

                adaptor.addChild(root_1, stream_implementation_method3.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method_wrapper3"


    public static class implementation_method3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:230:1: implementation_method3 : method_header_body3 ( SEMICOLON )? ( attribute )? ( block_wrapper )? ;
    public final ObjcmParser.implementation_method3_return implementation_method3() throws RecognitionException {
        ObjcmParser.implementation_method3_return retval = new ObjcmParser.implementation_method3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON81=null;
        ObjcmParser.method_header_body3_return method_header_body380 =null;

        ObjcmParser.attribute_return attribute82 =null;

        ObjcmParser.block_wrapper_return block_wrapper83 =null;


        Object SEMICOLON81_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:231:2: ( method_header_body3 ( SEMICOLON )? ( attribute )? ( block_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:231:4: method_header_body3 ( SEMICOLON )? ( attribute )? ( block_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_header_body3_in_implementation_method31036);
            method_header_body380=method_header_body3();

            state._fsp--;

            adaptor.addChild(root_0, method_header_body380.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:231:25: ( SEMICOLON )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==SEMICOLON) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:231:25: SEMICOLON
                    {
                    SEMICOLON81=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_implementation_method31039); 
                    SEMICOLON81_tree = 
                    (Object)adaptor.create(SEMICOLON81)
                    ;
                    adaptor.addChild(root_0, SEMICOLON81_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:232:3: ( attribute )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==189) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:232:3: attribute
                    {
                    pushFollow(FOLLOW_attribute_in_implementation_method31044);
                    attribute82=attribute();

                    state._fsp--;

                    adaptor.addChild(root_0, attribute82.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:233:3: ( block_wrapper )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==L_FBR) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:233:3: block_wrapper
                    {
                    pushFollow(FOLLOW_block_wrapper_in_implementation_method31049);
                    block_wrapper83=block_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, block_wrapper83.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method3"


    public static class attribute_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "attribute"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:236:1: attribute : '__attribute__' L_BR L_BR 'constructor' R_BR R_BR SEMICOLON ;
    public final ObjcmParser.attribute_return attribute() throws RecognitionException {
        ObjcmParser.attribute_return retval = new ObjcmParser.attribute_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal84=null;
        Token L_BR85=null;
        Token L_BR86=null;
        Token string_literal87=null;
        Token R_BR88=null;
        Token R_BR89=null;
        Token SEMICOLON90=null;

        Object string_literal84_tree=null;
        Object L_BR85_tree=null;
        Object L_BR86_tree=null;
        Object string_literal87_tree=null;
        Object R_BR88_tree=null;
        Object R_BR89_tree=null;
        Object SEMICOLON90_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:237:2: ( '__attribute__' L_BR L_BR 'constructor' R_BR R_BR SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:237:4: '__attribute__' L_BR L_BR 'constructor' R_BR R_BR SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            string_literal84=(Token)match(input,189,FOLLOW_189_in_attribute1062); 
            string_literal84_tree = 
            (Object)adaptor.create(string_literal84)
            ;
            adaptor.addChild(root_0, string_literal84_tree);


            L_BR85=(Token)match(input,L_BR,FOLLOW_L_BR_in_attribute1065); 
            L_BR85_tree = 
            (Object)adaptor.create(L_BR85)
            ;
            adaptor.addChild(root_0, L_BR85_tree);


            L_BR86=(Token)match(input,L_BR,FOLLOW_L_BR_in_attribute1068); 
            L_BR86_tree = 
            (Object)adaptor.create(L_BR86)
            ;
            adaptor.addChild(root_0, L_BR86_tree);


            string_literal87=(Token)match(input,193,FOLLOW_193_in_attribute1071); 
            string_literal87_tree = 
            (Object)adaptor.create(string_literal87)
            ;
            adaptor.addChild(root_0, string_literal87_tree);


            R_BR88=(Token)match(input,R_BR,FOLLOW_R_BR_in_attribute1074); 
            R_BR88_tree = 
            (Object)adaptor.create(R_BR88)
            ;
            adaptor.addChild(root_0, R_BR88_tree);


            R_BR89=(Token)match(input,R_BR,FOLLOW_R_BR_in_attribute1077); 
            R_BR89_tree = 
            (Object)adaptor.create(R_BR89)
            ;
            adaptor.addChild(root_0, R_BR89_tree);


            SEMICOLON90=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_attribute1080); 
            SEMICOLON90_tree = 
            (Object)adaptor.create(SEMICOLON90)
            ;
            adaptor.addChild(root_0, SEMICOLON90_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "attribute"


    public static class implementation_method2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:239:1: implementation_method2 : ( SEMICOLON )? block_wrapper ;
    public final ObjcmParser.implementation_method2_return implementation_method2() throws RecognitionException {
        ObjcmParser.implementation_method2_return retval = new ObjcmParser.implementation_method2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON91=null;
        ObjcmParser.block_wrapper_return block_wrapper92 =null;


        Object SEMICOLON91_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:240:2: ( ( SEMICOLON )? block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:240:5: ( SEMICOLON )? block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:240:5: ( SEMICOLON )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==SEMICOLON) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:240:5: SEMICOLON
                    {
                    SEMICOLON91=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_implementation_method21092); 
                    SEMICOLON91_tree = 
                    (Object)adaptor.create(SEMICOLON91)
                    ;
                    adaptor.addChild(root_0, SEMICOLON91_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_block_wrapper_in_implementation_method21097);
            block_wrapper92=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper92.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method2"


    public static class field_type_started_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_type_started_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:244:1: field_type_started_wrapper : field_type_started -> ^( FIELD_TYPE_STARTED field_type_started ) ;
    public final ObjcmParser.field_type_started_wrapper_return field_type_started_wrapper() throws RecognitionException {
        ObjcmParser.field_type_started_wrapper_return retval = new ObjcmParser.field_type_started_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_type_started_return field_type_started93 =null;


        RewriteRuleSubtreeStream stream_field_type_started=new RewriteRuleSubtreeStream(adaptor,"rule field_type_started");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:245:2: ( field_type_started -> ^( FIELD_TYPE_STARTED field_type_started ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:245:4: field_type_started
            {
            pushFollow(FOLLOW_field_type_started_in_field_type_started_wrapper1109);
            field_type_started93=field_type_started();

            state._fsp--;

            stream_field_type_started.add(field_type_started93.getTree());

            // AST REWRITE
            // elements: field_type_started
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 245:23: -> ^( FIELD_TYPE_STARTED field_type_started )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:245:26: ^( FIELD_TYPE_STARTED field_type_started )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD_TYPE_STARTED, "FIELD_TYPE_STARTED")
                , root_1);

                adaptor.addChild(root_1, stream_field_type_started.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_type_started_wrapper"


    public static class field_type_started_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_type_started"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:247:1: field_type_started : field_type name ( classic_method_declaration_wrapper | field_declaration_end_wrapper ) ;
    public final ObjcmParser.field_type_started_return field_type_started() throws RecognitionException {
        ObjcmParser.field_type_started_return retval = new ObjcmParser.field_type_started_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_type_return field_type94 =null;

        ObjcmParser.name_return name95 =null;

        ObjcmParser.classic_method_declaration_wrapper_return classic_method_declaration_wrapper96 =null;

        ObjcmParser.field_declaration_end_wrapper_return field_declaration_end_wrapper97 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:248:2: ( field_type name ( classic_method_declaration_wrapper | field_declaration_end_wrapper ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:248:4: field_type name ( classic_method_declaration_wrapper | field_declaration_end_wrapper )
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_type_in_field_type_started1128);
            field_type94=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type94.getTree());

            pushFollow(FOLLOW_name_in_field_type_started1130);
            name95=name();

            state._fsp--;

            adaptor.addChild(root_0, name95.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:248:20: ( classic_method_declaration_wrapper | field_declaration_end_wrapper )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==L_BR) ) {
                alt27=1;
            }
            else if ( (LA27_0==L_AND_EQ||(LA27_0 >= L_DIV_EQ && LA27_0 <= L_EQ)||LA27_0==L_LEFT_EQ||LA27_0==L_MINUS_EQ||LA27_0==L_MULT_EQ||LA27_0==L_OR_EQ||LA27_0==L_PERC_EQ||LA27_0==L_PLUS_EQ||LA27_0==L_RIGHT_EQ||LA27_0==L_XOR_EQ||LA27_0==SEMICOLON) ) {
                alt27=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;

            }
            switch (alt27) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:248:21: classic_method_declaration_wrapper
                    {
                    pushFollow(FOLLOW_classic_method_declaration_wrapper_in_field_type_started1133);
                    classic_method_declaration_wrapper96=classic_method_declaration_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, classic_method_declaration_wrapper96.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:248:58: field_declaration_end_wrapper
                    {
                    pushFollow(FOLLOW_field_declaration_end_wrapper_in_field_type_started1137);
                    field_declaration_end_wrapper97=field_declaration_end_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, field_declaration_end_wrapper97.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_type_started"


    public static class field_declaration_end_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_declaration_end_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:250:1: field_declaration_end_wrapper : field_declaration_end -> ^( FIELD field_declaration_end ) ;
    public final ObjcmParser.field_declaration_end_wrapper_return field_declaration_end_wrapper() throws RecognitionException {
        ObjcmParser.field_declaration_end_wrapper_return retval = new ObjcmParser.field_declaration_end_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_declaration_end_return field_declaration_end98 =null;


        RewriteRuleSubtreeStream stream_field_declaration_end=new RewriteRuleSubtreeStream(adaptor,"rule field_declaration_end");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:251:2: ( field_declaration_end -> ^( FIELD field_declaration_end ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:251:4: field_declaration_end
            {
            pushFollow(FOLLOW_field_declaration_end_in_field_declaration_end_wrapper1148);
            field_declaration_end98=field_declaration_end();

            state._fsp--;

            stream_field_declaration_end.add(field_declaration_end98.getTree());

            // AST REWRITE
            // elements: field_declaration_end
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 251:26: -> ^( FIELD field_declaration_end )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:251:29: ^( FIELD field_declaration_end )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD, "FIELD")
                , root_1);

                adaptor.addChild(root_1, stream_field_declaration_end.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_declaration_end_wrapper"


    public static class classic_method_declaration_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classic_method_declaration_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:253:1: classic_method_declaration_wrapper : classic_method_declaration -> ^( STATIC_METHOD classic_method_declaration ) ;
    public final ObjcmParser.classic_method_declaration_wrapper_return classic_method_declaration_wrapper() throws RecognitionException {
        ObjcmParser.classic_method_declaration_wrapper_return retval = new ObjcmParser.classic_method_declaration_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classic_method_declaration_return classic_method_declaration99 =null;


        RewriteRuleSubtreeStream stream_classic_method_declaration=new RewriteRuleSubtreeStream(adaptor,"rule classic_method_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:254:2: ( classic_method_declaration -> ^( STATIC_METHOD classic_method_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:254:4: classic_method_declaration
            {
            pushFollow(FOLLOW_classic_method_declaration_in_classic_method_declaration_wrapper1166);
            classic_method_declaration99=classic_method_declaration();

            state._fsp--;

            stream_classic_method_declaration.add(classic_method_declaration99.getTree());

            // AST REWRITE
            // elements: classic_method_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 254:31: -> ^( STATIC_METHOD classic_method_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:254:34: ^( STATIC_METHOD classic_method_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STATIC_METHOD, "STATIC_METHOD")
                , root_1);

                adaptor.addChild(root_1, stream_classic_method_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classic_method_declaration_wrapper"


    public static class classic_method_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classic_method_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:256:1: classic_method_declaration : method_params2 block_wrapper ;
    public final ObjcmParser.classic_method_declaration_return classic_method_declaration() throws RecognitionException {
        ObjcmParser.classic_method_declaration_return retval = new ObjcmParser.classic_method_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_params2_return method_params2100 =null;

        ObjcmParser.block_wrapper_return block_wrapper101 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:258:2: ( method_params2 block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:258:4: method_params2 block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_params2_in_classic_method_declaration1186);
            method_params2100=method_params2();

            state._fsp--;

            adaptor.addChild(root_0, method_params2100.getTree());

            pushFollow(FOLLOW_block_wrapper_in_classic_method_declaration1191);
            block_wrapper101=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper101.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classic_method_declaration"


    public static class implementation_method_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:262:1: implementation_method_wrapper : implementation_method -> ^( METHOD implementation_method ) ;
    public final ObjcmParser.implementation_method_wrapper_return implementation_method_wrapper() throws RecognitionException {
        ObjcmParser.implementation_method_wrapper_return retval = new ObjcmParser.implementation_method_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.implementation_method_return implementation_method102 =null;


        RewriteRuleSubtreeStream stream_implementation_method=new RewriteRuleSubtreeStream(adaptor,"rule implementation_method");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:263:2: ( implementation_method -> ^( METHOD implementation_method ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:263:4: implementation_method
            {
            pushFollow(FOLLOW_implementation_method_in_implementation_method_wrapper1204);
            implementation_method102=implementation_method();

            state._fsp--;

            stream_implementation_method.add(implementation_method102.getTree());

            // AST REWRITE
            // elements: implementation_method
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 263:26: -> ^( METHOD implementation_method )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:263:29: ^( METHOD implementation_method )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD, "METHOD")
                , root_1);

                adaptor.addChild(root_1, stream_implementation_method.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method_wrapper"


    public static class implementation_method_wrapper2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method_wrapper2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:265:1: implementation_method_wrapper2 : implementation_method2 -> ^( METHOD implementation_method2 ) ;
    public final ObjcmParser.implementation_method_wrapper2_return implementation_method_wrapper2() throws RecognitionException {
        ObjcmParser.implementation_method_wrapper2_return retval = new ObjcmParser.implementation_method_wrapper2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.implementation_method2_return implementation_method2103 =null;


        RewriteRuleSubtreeStream stream_implementation_method2=new RewriteRuleSubtreeStream(adaptor,"rule implementation_method2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:266:2: ( implementation_method2 -> ^( METHOD implementation_method2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:266:4: implementation_method2
            {
            pushFollow(FOLLOW_implementation_method2_in_implementation_method_wrapper21221);
            implementation_method2103=implementation_method2();

            state._fsp--;

            stream_implementation_method2.add(implementation_method2103.getTree());

            // AST REWRITE
            // elements: implementation_method2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 266:27: -> ^( METHOD implementation_method2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:266:30: ^( METHOD implementation_method2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD, "METHOD")
                , root_1);

                adaptor.addChild(root_1, stream_implementation_method2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method_wrapper2"


    public static class implementation_method_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "implementation_method"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:268:1: implementation_method : method_header_body ( SEMICOLON )? block_wrapper ;
    public final ObjcmParser.implementation_method_return implementation_method() throws RecognitionException {
        ObjcmParser.implementation_method_return retval = new ObjcmParser.implementation_method_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON105=null;
        ObjcmParser.method_header_body_return method_header_body104 =null;

        ObjcmParser.block_wrapper_return block_wrapper106 =null;


        Object SEMICOLON105_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:269:2: ( method_header_body ( SEMICOLON )? block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:269:4: method_header_body ( SEMICOLON )? block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_header_body_in_implementation_method1238);
            method_header_body104=method_header_body();

            state._fsp--;

            adaptor.addChild(root_0, method_header_body104.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:269:23: ( SEMICOLON )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==SEMICOLON) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:269:23: SEMICOLON
                    {
                    SEMICOLON105=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_implementation_method1240); 
                    SEMICOLON105_tree = 
                    (Object)adaptor.create(SEMICOLON105)
                    ;
                    adaptor.addChild(root_0, SEMICOLON105_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_block_wrapper_in_implementation_method1245);
            block_wrapper106=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper106.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "implementation_method"


    public static class block_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:273:1: block_wrapper : block -> ^( BLOCK block ) ;
    public final ObjcmParser.block_wrapper_return block_wrapper() throws RecognitionException {
        ObjcmParser.block_wrapper_return retval = new ObjcmParser.block_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_return block107 =null;


        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:274:2: ( block -> ^( BLOCK block ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:274:4: block
            {
            pushFollow(FOLLOW_block_in_block_wrapper1258);
            block107=block();

            state._fsp--;

            stream_block.add(block107.getTree());

            // AST REWRITE
            // elements: block
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 274:10: -> ^( BLOCK block )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:274:13: ^( BLOCK block )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(BLOCK, "BLOCK")
                , root_1);

                adaptor.addChild(root_1, stream_block.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_wrapper"


    public static class block_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:276:1: block : L_FBR ( block_internal_full | block )* R_FBR ;
    public final ObjcmParser.block_return block() throws RecognitionException {
        ObjcmParser.block_return retval = new ObjcmParser.block_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR108=null;
        Token R_FBR111=null;
        ObjcmParser.block_internal_full_return block_internal_full109 =null;

        ObjcmParser.block_return block110 =null;


        Object L_FBR108_tree=null;
        Object R_FBR111_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:276:7: ( L_FBR ( block_internal_full | block )* R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:277:3: L_FBR ( block_internal_full | block )* R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR108=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_block1280); 
            L_FBR108_tree = 
            (Object)adaptor.create(L_FBR108)
            ;
            adaptor.addChild(root_0, L_FBR108_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:278:4: ( block_internal_full | block )*
            loop29:
            do {
                int alt29=3;
                int LA29_0 = input.LA(1);

                if ( (LA29_0==ASTERISK||LA29_0==BREAK_WORD||LA29_0==CONST_PREFIX||LA29_0==ENUM_PREFIX||LA29_0==ID||LA29_0==L_AND||LA29_0==L_BR||LA29_0==L_KBR||LA29_0==L_MINUS||LA29_0==L_MINUS_MINUS||LA29_0==L_NOT||LA29_0==L_PLUS||LA29_0==L_PLUS_PLUS||LA29_0==L_TILDA||LA29_0==NUMBER||LA29_0==SEMICOLON||(LA29_0 >= SINGLE_OP && LA29_0 <= SIZEOF)||LA29_0==STATIC_PREFIX||(LA29_0 >= STRING_LITERAL && LA29_0 <= STRING_LITERAL3)||LA29_0==STRUCT_PREFIX||LA29_0==VOID||LA29_0==175||LA29_0==182||LA29_0==184||(LA29_0 >= 186 && LA29_0 <= 188)||(LA29_0 >= 190 && LA29_0 <= 191)||LA29_0==194||(LA29_0 >= 196 && LA29_0 <= 202)||(LA29_0 >= 204 && LA29_0 <= 207)||(LA29_0 >= 210 && LA29_0 <= 211)) ) {
                    alt29=1;
                }
                else if ( (LA29_0==L_FBR) ) {
                    alt29=2;
                }


                switch (alt29) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:278:5: block_internal_full
            	    {
            	    pushFollow(FOLLOW_block_internal_full_in_block1286);
            	    block_internal_full109=block_internal_full();

            	    state._fsp--;

            	    adaptor.addChild(root_0, block_internal_full109.getTree());

            	    }
            	    break;
            	case 2 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:278:27: block
            	    {
            	    pushFollow(FOLLOW_block_in_block1290);
            	    block110=block();

            	    state._fsp--;

            	    adaptor.addChild(root_0, block110.getTree());

            	    }
            	    break;

            	default :
            	    break loop29;
                }
            } while (true);


            R_FBR111=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_block1298); 
            R_FBR111_tree = 
            (Object)adaptor.create(R_FBR111)
            ;
            adaptor.addChild(root_0, R_FBR111_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block"


    public static class block_case_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_case"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:282:1: block_case : L_FBR ( block_internal_full | block )* ( default_stmt )? R_FBR ;
    public final ObjcmParser.block_case_return block_case() throws RecognitionException {
        ObjcmParser.block_case_return retval = new ObjcmParser.block_case_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR112=null;
        Token R_FBR116=null;
        ObjcmParser.block_internal_full_return block_internal_full113 =null;

        ObjcmParser.block_return block114 =null;

        ObjcmParser.default_stmt_return default_stmt115 =null;


        Object L_FBR112_tree=null;
        Object R_FBR116_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:283:2: ( L_FBR ( block_internal_full | block )* ( default_stmt )? R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:284:3: L_FBR ( block_internal_full | block )* ( default_stmt )? R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR112=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_block_case1313); 
            L_FBR112_tree = 
            (Object)adaptor.create(L_FBR112)
            ;
            adaptor.addChild(root_0, L_FBR112_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:285:4: ( block_internal_full | block )*
            loop30:
            do {
                int alt30=3;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==ASTERISK||LA30_0==BREAK_WORD||LA30_0==CONST_PREFIX||LA30_0==ENUM_PREFIX||LA30_0==ID||LA30_0==L_AND||LA30_0==L_BR||LA30_0==L_KBR||LA30_0==L_MINUS||LA30_0==L_MINUS_MINUS||LA30_0==L_NOT||LA30_0==L_PLUS||LA30_0==L_PLUS_PLUS||LA30_0==L_TILDA||LA30_0==NUMBER||LA30_0==SEMICOLON||(LA30_0 >= SINGLE_OP && LA30_0 <= SIZEOF)||LA30_0==STATIC_PREFIX||(LA30_0 >= STRING_LITERAL && LA30_0 <= STRING_LITERAL3)||LA30_0==STRUCT_PREFIX||LA30_0==VOID||LA30_0==175||LA30_0==182||LA30_0==184||(LA30_0 >= 186 && LA30_0 <= 188)||(LA30_0 >= 190 && LA30_0 <= 191)||LA30_0==194||(LA30_0 >= 196 && LA30_0 <= 202)||(LA30_0 >= 204 && LA30_0 <= 207)||(LA30_0 >= 210 && LA30_0 <= 211)) ) {
                    alt30=1;
                }
                else if ( (LA30_0==L_FBR) ) {
                    alt30=2;
                }


                switch (alt30) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:285:5: block_internal_full
            	    {
            	    pushFollow(FOLLOW_block_internal_full_in_block_case1319);
            	    block_internal_full113=block_internal_full();

            	    state._fsp--;

            	    adaptor.addChild(root_0, block_internal_full113.getTree());

            	    }
            	    break;
            	case 2 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:285:27: block
            	    {
            	    pushFollow(FOLLOW_block_in_block_case1323);
            	    block114=block();

            	    state._fsp--;

            	    adaptor.addChild(root_0, block114.getTree());

            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:286:4: ( default_stmt )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==195) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:286:4: default_stmt
                    {
                    pushFollow(FOLLOW_default_stmt_in_block_case1332);
                    default_stmt115=default_stmt();

                    state._fsp--;

                    adaptor.addChild(root_0, default_stmt115.getTree());

                    }
                    break;

            }


            R_FBR116=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_block_case1337); 
            R_FBR116_tree = 
            (Object)adaptor.create(R_FBR116)
            ;
            adaptor.addChild(root_0, R_FBR116_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_case"


    public static class block_internal_full_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_internal_full"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:290:1: block_internal_full : block_internal ;
    public final ObjcmParser.block_internal_full_return block_internal_full() throws RecognitionException {
        ObjcmParser.block_internal_full_return retval = new ObjcmParser.block_internal_full_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_internal_return block_internal117 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:291:2: ( block_internal )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:291:4: block_internal
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_block_internal_in_block_internal_full1349);
            block_internal117=block_internal();

            state._fsp--;

            adaptor.addChild(root_0, block_internal117.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_internal_full"


    public static class block_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:294:1: block_internal : ( try_stmt_wrapper | throw_stmt_wrapper | static_start_wrapper SEMICOLON | do_stmt | const_expression_wrapper SEMICOLON | variable_init_wrapper | if_stmt_wrapper | else_stmt | switch_stmt_wrapper | return_stmt | for_stmt_wrapper | while_stmt_wrapper | single_operators | struct_variable SEMICOLON | enum_variable SEMICOLON | typeof_started SEMICOLON | known_type_started SEMICOLON | SEMICOLON | goto_wrapper | 'extern' );
    public final ObjcmParser.block_internal_return block_internal() throws RecognitionException {
        ObjcmParser.block_internal_return retval = new ObjcmParser.block_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON121=null;
        Token SEMICOLON124=null;
        Token SEMICOLON134=null;
        Token SEMICOLON136=null;
        Token SEMICOLON138=null;
        Token SEMICOLON140=null;
        Token SEMICOLON141=null;
        Token string_literal143=null;
        ObjcmParser.try_stmt_wrapper_return try_stmt_wrapper118 =null;

        ObjcmParser.throw_stmt_wrapper_return throw_stmt_wrapper119 =null;

        ObjcmParser.static_start_wrapper_return static_start_wrapper120 =null;

        ObjcmParser.do_stmt_return do_stmt122 =null;

        ObjcmParser.const_expression_wrapper_return const_expression_wrapper123 =null;

        ObjcmParser.variable_init_wrapper_return variable_init_wrapper125 =null;

        ObjcmParser.if_stmt_wrapper_return if_stmt_wrapper126 =null;

        ObjcmParser.else_stmt_return else_stmt127 =null;

        ObjcmParser.switch_stmt_wrapper_return switch_stmt_wrapper128 =null;

        ObjcmParser.return_stmt_return return_stmt129 =null;

        ObjcmParser.for_stmt_wrapper_return for_stmt_wrapper130 =null;

        ObjcmParser.while_stmt_wrapper_return while_stmt_wrapper131 =null;

        ObjcmParser.single_operators_return single_operators132 =null;

        ObjcmParser.struct_variable_return struct_variable133 =null;

        ObjcmParser.enum_variable_return enum_variable135 =null;

        ObjcmParser.typeof_started_return typeof_started137 =null;

        ObjcmParser.known_type_started_return known_type_started139 =null;

        ObjcmParser.goto_wrapper_return goto_wrapper142 =null;


        Object SEMICOLON121_tree=null;
        Object SEMICOLON124_tree=null;
        Object SEMICOLON134_tree=null;
        Object SEMICOLON136_tree=null;
        Object SEMICOLON138_tree=null;
        Object SEMICOLON140_tree=null;
        Object SEMICOLON141_tree=null;
        Object string_literal143_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:295:2: ( try_stmt_wrapper | throw_stmt_wrapper | static_start_wrapper SEMICOLON | do_stmt | const_expression_wrapper SEMICOLON | variable_init_wrapper | if_stmt_wrapper | else_stmt | switch_stmt_wrapper | return_stmt | for_stmt_wrapper | while_stmt_wrapper | single_operators | struct_variable SEMICOLON | enum_variable SEMICOLON | typeof_started SEMICOLON | known_type_started SEMICOLON | SEMICOLON | goto_wrapper | 'extern' )
            int alt32=20;
            alt32 = dfa32.predict(input);
            switch (alt32) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:295:4: try_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_try_stmt_wrapper_in_block_internal1360);
                    try_stmt_wrapper118=try_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, try_stmt_wrapper118.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:296:4: throw_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_throw_stmt_wrapper_in_block_internal1365);
                    throw_stmt_wrapper119=throw_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, throw_stmt_wrapper119.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:297:4: static_start_wrapper SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_static_start_wrapper_in_block_internal1370);
                    static_start_wrapper120=static_start_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, static_start_wrapper120.getTree());

                    SEMICOLON121=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1372); 
                    SEMICOLON121_tree = 
                    (Object)adaptor.create(SEMICOLON121)
                    ;
                    adaptor.addChild(root_0, SEMICOLON121_tree);


                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:298:4: do_stmt
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_do_stmt_in_block_internal1377);
                    do_stmt122=do_stmt();

                    state._fsp--;

                    adaptor.addChild(root_0, do_stmt122.getTree());

                    }
                    break;
                case 5 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:299:4: const_expression_wrapper SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_const_expression_wrapper_in_block_internal1382);
                    const_expression_wrapper123=const_expression_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, const_expression_wrapper123.getTree());

                    SEMICOLON124=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1384); 
                    SEMICOLON124_tree = 
                    (Object)adaptor.create(SEMICOLON124)
                    ;
                    adaptor.addChild(root_0, SEMICOLON124_tree);


                    }
                    break;
                case 6 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:300:4: variable_init_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_variable_init_wrapper_in_block_internal1389);
                    variable_init_wrapper125=variable_init_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, variable_init_wrapper125.getTree());

                    }
                    break;
                case 7 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:301:4: if_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_if_stmt_wrapper_in_block_internal1394);
                    if_stmt_wrapper126=if_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, if_stmt_wrapper126.getTree());

                    }
                    break;
                case 8 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:302:4: else_stmt
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_else_stmt_in_block_internal1399);
                    else_stmt127=else_stmt();

                    state._fsp--;

                    adaptor.addChild(root_0, else_stmt127.getTree());

                    }
                    break;
                case 9 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:303:4: switch_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_switch_stmt_wrapper_in_block_internal1404);
                    switch_stmt_wrapper128=switch_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, switch_stmt_wrapper128.getTree());

                    }
                    break;
                case 10 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:304:4: return_stmt
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_return_stmt_in_block_internal1409);
                    return_stmt129=return_stmt();

                    state._fsp--;

                    adaptor.addChild(root_0, return_stmt129.getTree());

                    }
                    break;
                case 11 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:305:4: for_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_for_stmt_wrapper_in_block_internal1414);
                    for_stmt_wrapper130=for_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, for_stmt_wrapper130.getTree());

                    }
                    break;
                case 12 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:306:4: while_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_while_stmt_wrapper_in_block_internal1419);
                    while_stmt_wrapper131=while_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, while_stmt_wrapper131.getTree());

                    }
                    break;
                case 13 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:307:4: single_operators
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_single_operators_in_block_internal1424);
                    single_operators132=single_operators();

                    state._fsp--;

                    adaptor.addChild(root_0, single_operators132.getTree());

                    }
                    break;
                case 14 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:308:4: struct_variable SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_struct_variable_in_block_internal1429);
                    struct_variable133=struct_variable();

                    state._fsp--;

                    adaptor.addChild(root_0, struct_variable133.getTree());

                    SEMICOLON134=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1431); 
                    SEMICOLON134_tree = 
                    (Object)adaptor.create(SEMICOLON134)
                    ;
                    adaptor.addChild(root_0, SEMICOLON134_tree);


                    }
                    break;
                case 15 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:309:4: enum_variable SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_enum_variable_in_block_internal1436);
                    enum_variable135=enum_variable();

                    state._fsp--;

                    adaptor.addChild(root_0, enum_variable135.getTree());

                    SEMICOLON136=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1438); 
                    SEMICOLON136_tree = 
                    (Object)adaptor.create(SEMICOLON136)
                    ;
                    adaptor.addChild(root_0, SEMICOLON136_tree);


                    }
                    break;
                case 16 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:310:4: typeof_started SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_typeof_started_in_block_internal1443);
                    typeof_started137=typeof_started();

                    state._fsp--;

                    adaptor.addChild(root_0, typeof_started137.getTree());

                    SEMICOLON138=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1445); 
                    SEMICOLON138_tree = 
                    (Object)adaptor.create(SEMICOLON138)
                    ;
                    adaptor.addChild(root_0, SEMICOLON138_tree);


                    }
                    break;
                case 17 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:311:4: known_type_started SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_known_type_started_in_block_internal1450);
                    known_type_started139=known_type_started();

                    state._fsp--;

                    adaptor.addChild(root_0, known_type_started139.getTree());

                    SEMICOLON140=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1452); 
                    SEMICOLON140_tree = 
                    (Object)adaptor.create(SEMICOLON140)
                    ;
                    adaptor.addChild(root_0, SEMICOLON140_tree);


                    }
                    break;
                case 18 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:312:4: SEMICOLON
                    {
                    root_0 = (Object)adaptor.nil();


                    SEMICOLON141=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_block_internal1457); 
                    SEMICOLON141_tree = 
                    (Object)adaptor.create(SEMICOLON141)
                    ;
                    adaptor.addChild(root_0, SEMICOLON141_tree);


                    }
                    break;
                case 19 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:313:4: goto_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_goto_wrapper_in_block_internal1463);
                    goto_wrapper142=goto_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, goto_wrapper142.getTree());

                    }
                    break;
                case 20 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:314:4: 'extern'
                    {
                    root_0 = (Object)adaptor.nil();


                    string_literal143=(Token)match(input,198,FOLLOW_198_in_block_internal1468); 
                    string_literal143_tree = 
                    (Object)adaptor.create(string_literal143)
                    ;
                    adaptor.addChild(root_0, string_literal143_tree);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_internal"


    public static class goto_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "goto_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:317:1: goto_wrapper : goto_operator -> ^( GOTO goto_operator ) ;
    public final ObjcmParser.goto_wrapper_return goto_wrapper() throws RecognitionException {
        ObjcmParser.goto_wrapper_return retval = new ObjcmParser.goto_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.goto_operator_return goto_operator144 =null;


        RewriteRuleSubtreeStream stream_goto_operator=new RewriteRuleSubtreeStream(adaptor,"rule goto_operator");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:318:2: ( goto_operator -> ^( GOTO goto_operator ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:318:4: goto_operator
            {
            pushFollow(FOLLOW_goto_operator_in_goto_wrapper1480);
            goto_operator144=goto_operator();

            state._fsp--;

            stream_goto_operator.add(goto_operator144.getTree());

            // AST REWRITE
            // elements: goto_operator
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 318:18: -> ^( GOTO goto_operator )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:318:21: ^( GOTO goto_operator )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(GOTO, "GOTO")
                , root_1);

                adaptor.addChild(root_1, stream_goto_operator.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "goto_wrapper"


    public static class goto_operator_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "goto_operator"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:320:1: goto_operator : 'goto' ID SEMICOLON ;
    public final ObjcmParser.goto_operator_return goto_operator() throws RecognitionException {
        ObjcmParser.goto_operator_return retval = new ObjcmParser.goto_operator_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal145=null;
        Token ID146=null;
        Token SEMICOLON147=null;

        Object string_literal145_tree=null;
        Object ID146_tree=null;
        Object SEMICOLON147_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:321:2: ( 'goto' ID SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:321:4: 'goto' ID SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            string_literal145=(Token)match(input,200,FOLLOW_200_in_goto_operator1497); 
            string_literal145_tree = 
            (Object)adaptor.create(string_literal145)
            ;
            adaptor.addChild(root_0, string_literal145_tree);


            ID146=(Token)match(input,ID,FOLLOW_ID_in_goto_operator1499); 
            ID146_tree = 
            (Object)adaptor.create(ID146)
            ;
            adaptor.addChild(root_0, ID146_tree);


            SEMICOLON147=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_goto_operator1501); 
            SEMICOLON147_tree = 
            (Object)adaptor.create(SEMICOLON147)
            ;
            adaptor.addChild(root_0, SEMICOLON147_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "goto_operator"


    public static class variable_init_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "variable_init_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:323:1: variable_init_wrapper : variable_init -> ^( VARIABLE_INIT variable_init ) ;
    public final ObjcmParser.variable_init_wrapper_return variable_init_wrapper() throws RecognitionException {
        ObjcmParser.variable_init_wrapper_return retval = new ObjcmParser.variable_init_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.variable_init_return variable_init148 =null;


        RewriteRuleSubtreeStream stream_variable_init=new RewriteRuleSubtreeStream(adaptor,"rule variable_init");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:324:2: ( variable_init -> ^( VARIABLE_INIT variable_init ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:324:4: variable_init
            {
            pushFollow(FOLLOW_variable_init_in_variable_init_wrapper1512);
            variable_init148=variable_init();

            state._fsp--;

            stream_variable_init.add(variable_init148.getTree());

            // AST REWRITE
            // elements: variable_init
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 324:18: -> ^( VARIABLE_INIT variable_init )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:324:21: ^( VARIABLE_INIT variable_init )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(VARIABLE_INIT, "VARIABLE_INIT")
                , root_1);

                adaptor.addChild(root_1, stream_variable_init.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "variable_init_wrapper"


    public static class variable_init_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "variable_init"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:326:1: variable_init : full_expr_wrapper ( ( ( full_expr2 )? SEMICOLON ) | COLON ) ;
    public final ObjcmParser.variable_init_return variable_init() throws RecognitionException {
        ObjcmParser.variable_init_return retval = new ObjcmParser.variable_init_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON151=null;
        Token COLON152=null;
        ObjcmParser.full_expr_wrapper_return full_expr_wrapper149 =null;

        ObjcmParser.full_expr2_return full_expr2150 =null;


        Object SEMICOLON151_tree=null;
        Object COLON152_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:2: ( full_expr_wrapper ( ( ( full_expr2 )? SEMICOLON ) | COLON ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:4: full_expr_wrapper ( ( ( full_expr2 )? SEMICOLON ) | COLON )
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_full_expr_wrapper_in_variable_init1530);
            full_expr_wrapper149=full_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, full_expr_wrapper149.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:22: ( ( ( full_expr2 )? SEMICOLON ) | COLON )
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==ID||LA34_0==SEMICOLON||LA34_0==VOID||LA34_0==191||LA34_0==194||LA34_0==202||LA34_0==205||LA34_0==210) ) {
                alt34=1;
            }
            else if ( (LA34_0==COLON) ) {
                alt34=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;

            }
            switch (alt34) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:23: ( ( full_expr2 )? SEMICOLON )
                    {
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:23: ( ( full_expr2 )? SEMICOLON )
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:24: ( full_expr2 )? SEMICOLON
                    {
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:24: ( full_expr2 )?
                    int alt33=2;
                    int LA33_0 = input.LA(1);

                    if ( (LA33_0==ID||LA33_0==VOID||LA33_0==191||LA33_0==194||LA33_0==202||LA33_0==205||LA33_0==210) ) {
                        alt33=1;
                    }
                    switch (alt33) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:24: full_expr2
                            {
                            pushFollow(FOLLOW_full_expr2_in_variable_init1534);
                            full_expr2150=full_expr2();

                            state._fsp--;

                            adaptor.addChild(root_0, full_expr2150.getTree());

                            }
                            break;

                    }


                    SEMICOLON151=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_variable_init1537); 
                    SEMICOLON151_tree = 
                    (Object)adaptor.create(SEMICOLON151)
                    ;
                    adaptor.addChild(root_0, SEMICOLON151_tree);


                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:327:49: COLON
                    {
                    COLON152=(Token)match(input,COLON,FOLLOW_COLON_in_variable_init1542); 
                    COLON152_tree = 
                    (Object)adaptor.create(COLON152)
                    ;
                    adaptor.addChild(root_0, COLON152_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "variable_init"


    public static class known_type_started_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "known_type_started"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:329:1: known_type_started : known_types ( ASTERISK )* full_expr2 ;
    public final ObjcmParser.known_type_started_return known_type_started() throws RecognitionException {
        ObjcmParser.known_type_started_return retval = new ObjcmParser.known_type_started_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ASTERISK154=null;
        ObjcmParser.known_types_return known_types153 =null;

        ObjcmParser.full_expr2_return full_expr2155 =null;


        Object ASTERISK154_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:330:2: ( known_types ( ASTERISK )* full_expr2 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:330:4: known_types ( ASTERISK )* full_expr2
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_known_types_in_known_type_started1554);
            known_types153=known_types();

            state._fsp--;

            adaptor.addChild(root_0, known_types153.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:330:16: ( ASTERISK )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( (LA35_0==ASTERISK) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:330:16: ASTERISK
            	    {
            	    ASTERISK154=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_known_type_started1556); 
            	    ASTERISK154_tree = 
            	    (Object)adaptor.create(ASTERISK154)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK154_tree);


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);


            pushFollow(FOLLOW_full_expr2_in_known_type_started1559);
            full_expr2155=full_expr2();

            state._fsp--;

            adaptor.addChild(root_0, full_expr2155.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "known_type_started"


    public static class typeof_started_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typeof_started"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:332:1: typeof_started : typeof full_expr_wrapper ;
    public final ObjcmParser.typeof_started_return typeof_started() throws RecognitionException {
        ObjcmParser.typeof_started_return retval = new ObjcmParser.typeof_started_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typeof_return typeof156 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper157 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:333:2: ( typeof full_expr_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:333:4: typeof full_expr_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_typeof_in_typeof_started1571);
            typeof156=typeof();

            state._fsp--;

            adaptor.addChild(root_0, typeof156.getTree());

            pushFollow(FOLLOW_full_expr_wrapper_in_typeof_started1573);
            full_expr_wrapper157=full_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, full_expr_wrapper157.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typeof_started"


    public static class struct_variable_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_variable"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:336:1: struct_variable : STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* -> ^( STRUCT_VARIABLE STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* ) ;
    public final ObjcmParser.struct_variable_return struct_variable() throws RecognitionException {
        ObjcmParser.struct_variable_return retval = new ObjcmParser.struct_variable_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STRUCT_PREFIX158=null;
        Token COMMA161=null;
        ObjcmParser.name_return name159 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper160 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper162 =null;


        Object STRUCT_PREFIX158_tree=null;
        Object COMMA161_tree=null;
        RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
        RewriteRuleTokenStream stream_STRUCT_PREFIX=new RewriteRuleTokenStream(adaptor,"token STRUCT_PREFIX");
        RewriteRuleSubtreeStream stream_full_expr_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule full_expr_wrapper");
        RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"rule name");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:2: ( STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* -> ^( STRUCT_VARIABLE STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:4: STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )*
            {
            STRUCT_PREFIX158=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_struct_variable1586);  
            stream_STRUCT_PREFIX.add(STRUCT_PREFIX158);


            pushFollow(FOLLOW_name_in_struct_variable1588);
            name159=name();

            state._fsp--;

            stream_name.add(name159.getTree());

            pushFollow(FOLLOW_full_expr_wrapper_in_struct_variable1590);
            full_expr_wrapper160=full_expr_wrapper();

            state._fsp--;

            stream_full_expr_wrapper.add(full_expr_wrapper160.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:41: ( COMMA full_expr_wrapper )*
            loop36:
            do {
                int alt36=2;
                int LA36_0 = input.LA(1);

                if ( (LA36_0==COMMA) ) {
                    alt36=1;
                }


                switch (alt36) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:42: COMMA full_expr_wrapper
            	    {
            	    COMMA161=(Token)match(input,COMMA,FOLLOW_COMMA_in_struct_variable1593);  
            	    stream_COMMA.add(COMMA161);


            	    pushFollow(FOLLOW_full_expr_wrapper_in_struct_variable1595);
            	    full_expr_wrapper162=full_expr_wrapper();

            	    state._fsp--;

            	    stream_full_expr_wrapper.add(full_expr_wrapper162.getTree());

            	    }
            	    break;

            	default :
            	    break loop36;
                }
            } while (true);


            // AST REWRITE
            // elements: full_expr_wrapper, name, COMMA, STRUCT_PREFIX, full_expr_wrapper
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 337:68: -> ^( STRUCT_VARIABLE STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:71: ^( STRUCT_VARIABLE STRUCT_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STRUCT_VARIABLE, "STRUCT_VARIABLE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_STRUCT_PREFIX.nextNode()
                );

                adaptor.addChild(root_1, stream_name.nextTree());

                adaptor.addChild(root_1, stream_full_expr_wrapper.nextTree());

                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:337:126: ( COMMA full_expr_wrapper )*
                while ( stream_COMMA.hasNext()||stream_full_expr_wrapper.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_COMMA.nextNode()
                    );

                    adaptor.addChild(root_1, stream_full_expr_wrapper.nextTree());

                }
                stream_COMMA.reset();
                stream_full_expr_wrapper.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_variable"


    public static class enum_variable_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "enum_variable"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:339:1: enum_variable : ENUM_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* ;
    public final ObjcmParser.enum_variable_return enum_variable() throws RecognitionException {
        ObjcmParser.enum_variable_return retval = new ObjcmParser.enum_variable_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ENUM_PREFIX163=null;
        Token COMMA166=null;
        ObjcmParser.name_return name164 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper165 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper167 =null;


        Object ENUM_PREFIX163_tree=null;
        Object COMMA166_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:340:2: ( ENUM_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:340:4: ENUM_PREFIX name full_expr_wrapper ( COMMA full_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            ENUM_PREFIX163=(Token)match(input,ENUM_PREFIX,FOLLOW_ENUM_PREFIX_in_enum_variable1625); 
            ENUM_PREFIX163_tree = 
            (Object)adaptor.create(ENUM_PREFIX163)
            ;
            adaptor.addChild(root_0, ENUM_PREFIX163_tree);


            pushFollow(FOLLOW_name_in_enum_variable1627);
            name164=name();

            state._fsp--;

            adaptor.addChild(root_0, name164.getTree());

            pushFollow(FOLLOW_full_expr_wrapper_in_enum_variable1629);
            full_expr_wrapper165=full_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, full_expr_wrapper165.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:340:39: ( COMMA full_expr_wrapper )*
            loop37:
            do {
                int alt37=2;
                int LA37_0 = input.LA(1);

                if ( (LA37_0==COMMA) ) {
                    alt37=1;
                }


                switch (alt37) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:340:40: COMMA full_expr_wrapper
            	    {
            	    COMMA166=(Token)match(input,COMMA,FOLLOW_COMMA_in_enum_variable1632); 
            	    COMMA166_tree = 
            	    (Object)adaptor.create(COMMA166)
            	    ;
            	    adaptor.addChild(root_0, COMMA166_tree);


            	    pushFollow(FOLLOW_full_expr_wrapper_in_enum_variable1634);
            	    full_expr_wrapper167=full_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, full_expr_wrapper167.getTree());

            	    }
            	    break;

            	default :
            	    break loop37;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "enum_variable"


    public static class const_expression_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "const_expression_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:342:1: const_expression_wrapper : CONST_PREFIX const_expression -> ^( CONST_EXPR2 const_expression ) ;
    public final ObjcmParser.const_expression_wrapper_return const_expression_wrapper() throws RecognitionException {
        ObjcmParser.const_expression_wrapper_return retval = new ObjcmParser.const_expression_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token CONST_PREFIX168=null;
        ObjcmParser.const_expression_return const_expression169 =null;


        Object CONST_PREFIX168_tree=null;
        RewriteRuleTokenStream stream_CONST_PREFIX=new RewriteRuleTokenStream(adaptor,"token CONST_PREFIX");
        RewriteRuleSubtreeStream stream_const_expression=new RewriteRuleSubtreeStream(adaptor,"rule const_expression");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:343:2: ( CONST_PREFIX const_expression -> ^( CONST_EXPR2 const_expression ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:343:4: CONST_PREFIX const_expression
            {
            CONST_PREFIX168=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_const_expression_wrapper1645);  
            stream_CONST_PREFIX.add(CONST_PREFIX168);


            pushFollow(FOLLOW_const_expression_in_const_expression_wrapper1647);
            const_expression169=const_expression();

            state._fsp--;

            stream_const_expression.add(const_expression169.getTree());

            // AST REWRITE
            // elements: const_expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 343:34: -> ^( CONST_EXPR2 const_expression )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:343:37: ^( CONST_EXPR2 const_expression )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CONST_EXPR2, "CONST_EXPR2")
                , root_1);

                adaptor.addChild(root_1, stream_const_expression.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "const_expression_wrapper"


    public static class const_expression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "const_expression"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:345:1: const_expression : type_internal full_expr_wrapper ;
    public final ObjcmParser.const_expression_return const_expression() throws RecognitionException {
        ObjcmParser.const_expression_return retval = new ObjcmParser.const_expression_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.type_internal_return type_internal170 =null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper171 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:346:2: ( type_internal full_expr_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:346:4: type_internal full_expr_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_type_internal_in_const_expression1666);
            type_internal170=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal170.getTree());

            pushFollow(FOLLOW_full_expr_wrapper_in_const_expression1668);
            full_expr_wrapper171=full_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, full_expr_wrapper171.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "const_expression"


    public static class throw_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "throw_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:348:1: throw_stmt_wrapper : throw_stmt -> ^( THROW_STMT throw_stmt ) ;
    public final ObjcmParser.throw_stmt_wrapper_return throw_stmt_wrapper() throws RecognitionException {
        ObjcmParser.throw_stmt_wrapper_return retval = new ObjcmParser.throw_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.throw_stmt_return throw_stmt172 =null;


        RewriteRuleSubtreeStream stream_throw_stmt=new RewriteRuleSubtreeStream(adaptor,"rule throw_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:349:2: ( throw_stmt -> ^( THROW_STMT throw_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:349:4: throw_stmt
            {
            pushFollow(FOLLOW_throw_stmt_in_throw_stmt_wrapper1677);
            throw_stmt172=throw_stmt();

            state._fsp--;

            stream_throw_stmt.add(throw_stmt172.getTree());

            // AST REWRITE
            // elements: throw_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 349:15: -> ^( THROW_STMT throw_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:349:18: ^( THROW_STMT throw_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(THROW_STMT, "THROW_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_throw_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "throw_stmt_wrapper"


    public static class throw_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "throw_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:351:1: throw_stmt : '@throw' ( exception_variable )? SEMICOLON ;
    public final ObjcmParser.throw_stmt_return throw_stmt() throws RecognitionException {
        ObjcmParser.throw_stmt_return retval = new ObjcmParser.throw_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal173=null;
        Token SEMICOLON175=null;
        ObjcmParser.exception_variable_return exception_variable174 =null;


        Object string_literal173_tree=null;
        Object SEMICOLON175_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:352:2: ( '@throw' ( exception_variable )? SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:352:4: '@throw' ( exception_variable )? SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            string_literal173=(Token)match(input,186,FOLLOW_186_in_throw_stmt1694); 
            string_literal173_tree = 
            (Object)adaptor.create(string_literal173)
            ;
            adaptor.addChild(root_0, string_literal173_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:352:14: ( exception_variable )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==ID) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:352:14: exception_variable
                    {
                    pushFollow(FOLLOW_exception_variable_in_throw_stmt1697);
                    exception_variable174=exception_variable();

                    state._fsp--;

                    adaptor.addChild(root_0, exception_variable174.getTree());

                    }
                    break;

            }


            SEMICOLON175=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_throw_stmt1700); 
            SEMICOLON175_tree = 
            (Object)adaptor.create(SEMICOLON175)
            ;
            adaptor.addChild(root_0, SEMICOLON175_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "throw_stmt"


    public static class exception_variable_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "exception_variable"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:355:1: exception_variable : ID -> ^( NAME ID ) ;
    public final ObjcmParser.exception_variable_return exception_variable() throws RecognitionException {
        ObjcmParser.exception_variable_return retval = new ObjcmParser.exception_variable_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID176=null;

        Object ID176_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:356:2: ( ID -> ^( NAME ID ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:356:4: ID
            {
            ID176=(Token)match(input,ID,FOLLOW_ID_in_exception_variable1713);  
            stream_ID.add(ID176);


            // AST REWRITE
            // elements: ID
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 356:7: -> ^( NAME ID )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:356:10: ^( NAME ID )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(NAME, "NAME")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ID.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "exception_variable"


    public static class try_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "try_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:358:1: try_stmt_wrapper : try_stmt -> ^( TRY_STMT try_stmt ) ;
    public final ObjcmParser.try_stmt_wrapper_return try_stmt_wrapper() throws RecognitionException {
        ObjcmParser.try_stmt_wrapper_return retval = new ObjcmParser.try_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.try_stmt_return try_stmt177 =null;


        RewriteRuleSubtreeStream stream_try_stmt=new RewriteRuleSubtreeStream(adaptor,"rule try_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:359:2: ( try_stmt -> ^( TRY_STMT try_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:359:4: try_stmt
            {
            pushFollow(FOLLOW_try_stmt_in_try_stmt_wrapper1731);
            try_stmt177=try_stmt();

            state._fsp--;

            stream_try_stmt.add(try_stmt177.getTree());

            // AST REWRITE
            // elements: try_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 359:13: -> ^( TRY_STMT try_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:359:16: ^( TRY_STMT try_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TRY_STMT, "TRY_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_try_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "try_stmt_wrapper"


    public static class try_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "try_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:1: try_stmt : '@try' block_wrapper ( catch_stmt_wrapper )* ( '@finally' finally_block )? ;
    public final ObjcmParser.try_stmt_return try_stmt() throws RecognitionException {
        ObjcmParser.try_stmt_return retval = new ObjcmParser.try_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal178=null;
        Token string_literal181=null;
        ObjcmParser.block_wrapper_return block_wrapper179 =null;

        ObjcmParser.catch_stmt_wrapper_return catch_stmt_wrapper180 =null;

        ObjcmParser.finally_block_return finally_block182 =null;


        Object string_literal178_tree=null;
        Object string_literal181_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:9: ( '@try' block_wrapper ( catch_stmt_wrapper )* ( '@finally' finally_block )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:11: '@try' block_wrapper ( catch_stmt_wrapper )* ( '@finally' finally_block )?
            {
            root_0 = (Object)adaptor.nil();


            string_literal178=(Token)match(input,187,FOLLOW_187_in_try_stmt1747); 
            string_literal178_tree = 
            (Object)adaptor.create(string_literal178)
            ;
            adaptor.addChild(root_0, string_literal178_tree);


            pushFollow(FOLLOW_block_wrapper_in_try_stmt1750);
            block_wrapper179=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper179.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:34: ( catch_stmt_wrapper )*
            loop39:
            do {
                int alt39=2;
                int LA39_0 = input.LA(1);

                if ( (LA39_0==174) ) {
                    alt39=1;
                }


                switch (alt39) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:34: catch_stmt_wrapper
            	    {
            	    pushFollow(FOLLOW_catch_stmt_wrapper_in_try_stmt1753);
            	    catch_stmt_wrapper180=catch_stmt_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, catch_stmt_wrapper180.getTree());

            	    }
            	    break;

            	default :
            	    break loop39;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:54: ( '@finally' finally_block )?
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==177) ) {
                alt40=1;
            }
            switch (alt40) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:361:55: '@finally' finally_block
                    {
                    string_literal181=(Token)match(input,177,FOLLOW_177_in_try_stmt1757); 
                    string_literal181_tree = 
                    (Object)adaptor.create(string_literal181)
                    ;
                    adaptor.addChild(root_0, string_literal181_tree);


                    pushFollow(FOLLOW_finally_block_in_try_stmt1760);
                    finally_block182=finally_block();

                    state._fsp--;

                    adaptor.addChild(root_0, finally_block182.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "try_stmt"


    public static class finally_block_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "finally_block"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:364:1: finally_block : block -> ^( FINALLY_BLOCK block ) ;
    public final ObjcmParser.finally_block_return finally_block() throws RecognitionException {
        ObjcmParser.finally_block_return retval = new ObjcmParser.finally_block_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_return block183 =null;


        RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:365:2: ( block -> ^( FINALLY_BLOCK block ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:365:4: block
            {
            pushFollow(FOLLOW_block_in_finally_block1774);
            block183=block();

            state._fsp--;

            stream_block.add(block183.getTree());

            // AST REWRITE
            // elements: block
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 365:10: -> ^( FINALLY_BLOCK block )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:365:13: ^( FINALLY_BLOCK block )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FINALLY_BLOCK, "FINALLY_BLOCK")
                , root_1);

                adaptor.addChild(root_1, stream_block.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "finally_block"


    public static class catch_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "catch_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:367:1: catch_stmt_wrapper : catch_stmt -> ^( CATCH_STMT catch_stmt ) ;
    public final ObjcmParser.catch_stmt_wrapper_return catch_stmt_wrapper() throws RecognitionException {
        ObjcmParser.catch_stmt_wrapper_return retval = new ObjcmParser.catch_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.catch_stmt_return catch_stmt184 =null;


        RewriteRuleSubtreeStream stream_catch_stmt=new RewriteRuleSubtreeStream(adaptor,"rule catch_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:368:2: ( catch_stmt -> ^( CATCH_STMT catch_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:368:4: catch_stmt
            {
            pushFollow(FOLLOW_catch_stmt_in_catch_stmt_wrapper1793);
            catch_stmt184=catch_stmt();

            state._fsp--;

            stream_catch_stmt.add(catch_stmt184.getTree());

            // AST REWRITE
            // elements: catch_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 368:15: -> ^( CATCH_STMT catch_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:368:18: ^( CATCH_STMT catch_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CATCH_STMT, "CATCH_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_catch_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "catch_stmt_wrapper"


    public static class catch_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "catch_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:370:1: catch_stmt : '@catch' L_BR ( ( exception_type ( ASTERISK )* ID ) | '...' ) R_BR block_wrapper ;
    public final ObjcmParser.catch_stmt_return catch_stmt() throws RecognitionException {
        ObjcmParser.catch_stmt_return retval = new ObjcmParser.catch_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal185=null;
        Token L_BR186=null;
        Token ASTERISK188=null;
        Token ID189=null;
        Token string_literal190=null;
        Token R_BR191=null;
        ObjcmParser.exception_type_return exception_type187 =null;

        ObjcmParser.block_wrapper_return block_wrapper192 =null;


        Object string_literal185_tree=null;
        Object L_BR186_tree=null;
        Object ASTERISK188_tree=null;
        Object ID189_tree=null;
        Object string_literal190_tree=null;
        Object R_BR191_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:2: ( '@catch' L_BR ( ( exception_type ( ASTERISK )* ID ) | '...' ) R_BR block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:4: '@catch' L_BR ( ( exception_type ( ASTERISK )* ID ) | '...' ) R_BR block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            string_literal185=(Token)match(input,174,FOLLOW_174_in_catch_stmt1812); 
            string_literal185_tree = 
            (Object)adaptor.create(string_literal185)
            ;
            adaptor.addChild(root_0, string_literal185_tree);


            L_BR186=(Token)match(input,L_BR,FOLLOW_L_BR_in_catch_stmt1815); 
            L_BR186_tree = 
            (Object)adaptor.create(L_BR186)
            ;
            adaptor.addChild(root_0, L_BR186_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:20: ( ( exception_type ( ASTERISK )* ID ) | '...' )
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==ID) ) {
                alt42=1;
            }
            else if ( (LA42_0==173) ) {
                alt42=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 42, 0, input);

                throw nvae;

            }
            switch (alt42) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:21: ( exception_type ( ASTERISK )* ID )
                    {
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:21: ( exception_type ( ASTERISK )* ID )
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:22: exception_type ( ASTERISK )* ID
                    {
                    pushFollow(FOLLOW_exception_type_in_catch_stmt1820);
                    exception_type187=exception_type();

                    state._fsp--;

                    adaptor.addChild(root_0, exception_type187.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:38: ( ASTERISK )*
                    loop41:
                    do {
                        int alt41=2;
                        int LA41_0 = input.LA(1);

                        if ( (LA41_0==ASTERISK) ) {
                            alt41=1;
                        }


                        switch (alt41) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:38: ASTERISK
                    	    {
                    	    ASTERISK188=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_catch_stmt1823); 
                    	    ASTERISK188_tree = 
                    	    (Object)adaptor.create(ASTERISK188)
                    	    ;
                    	    adaptor.addChild(root_0, ASTERISK188_tree);


                    	    }
                    	    break;

                    	default :
                    	    break loop41;
                        }
                    } while (true);


                    ID189=(Token)match(input,ID,FOLLOW_ID_in_catch_stmt1826); 
                    ID189_tree = 
                    (Object)adaptor.create(ID189)
                    ;
                    adaptor.addChild(root_0, ID189_tree);


                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:371:54: '...'
                    {
                    string_literal190=(Token)match(input,173,FOLLOW_173_in_catch_stmt1831); 
                    string_literal190_tree = 
                    (Object)adaptor.create(string_literal190)
                    ;
                    adaptor.addChild(root_0, string_literal190_tree);


                    }
                    break;

            }


            R_BR191=(Token)match(input,R_BR,FOLLOW_R_BR_in_catch_stmt1835); 
            R_BR191_tree = 
            (Object)adaptor.create(R_BR191)
            ;
            adaptor.addChild(root_0, R_BR191_tree);


            pushFollow(FOLLOW_block_wrapper_in_catch_stmt1838);
            block_wrapper192=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper192.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "catch_stmt"


    public static class exception_type_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "exception_type"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:374:1: exception_type : ID -> ^( EXC_TYPE ID ) ;
    public final ObjcmParser.exception_type_return exception_type() throws RecognitionException {
        ObjcmParser.exception_type_return retval = new ObjcmParser.exception_type_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID193=null;

        Object ID193_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:375:2: ( ID -> ^( EXC_TYPE ID ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:375:4: ID
            {
            ID193=(Token)match(input,ID,FOLLOW_ID_in_exception_type1852);  
            stream_ID.add(ID193);


            // AST REWRITE
            // elements: ID
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 375:7: -> ^( EXC_TYPE ID )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:375:10: ^( EXC_TYPE ID )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXC_TYPE, "EXC_TYPE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ID.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "exception_type"


    public static class switch_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:377:1: switch_stmt_wrapper : switch_stmt -> ^( SWITCH switch_stmt ) ;
    public final ObjcmParser.switch_stmt_wrapper_return switch_stmt_wrapper() throws RecognitionException {
        ObjcmParser.switch_stmt_wrapper_return retval = new ObjcmParser.switch_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.switch_stmt_return switch_stmt194 =null;


        RewriteRuleSubtreeStream stream_switch_stmt=new RewriteRuleSubtreeStream(adaptor,"rule switch_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:378:2: ( switch_stmt -> ^( SWITCH switch_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:378:4: switch_stmt
            {
            pushFollow(FOLLOW_switch_stmt_in_switch_stmt_wrapper1871);
            switch_stmt194=switch_stmt();

            state._fsp--;

            stream_switch_stmt.add(switch_stmt194.getTree());

            // AST REWRITE
            // elements: switch_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 378:16: -> ^( SWITCH switch_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:378:19: ^( SWITCH switch_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SWITCH, "SWITCH")
                , root_1);

                adaptor.addChild(root_1, stream_switch_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_stmt_wrapper"


    public static class switch_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:380:1: switch_stmt : 'switch' L_BR switch_expr R_BR switch_body_wrapper ;
    public final ObjcmParser.switch_stmt_return switch_stmt() throws RecognitionException {
        ObjcmParser.switch_stmt_return retval = new ObjcmParser.switch_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal195=null;
        Token L_BR196=null;
        Token R_BR198=null;
        ObjcmParser.switch_expr_return switch_expr197 =null;

        ObjcmParser.switch_body_wrapper_return switch_body_wrapper199 =null;


        Object string_literal195_tree=null;
        Object L_BR196_tree=null;
        Object R_BR198_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:381:2: ( 'switch' L_BR switch_expr R_BR switch_body_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:381:4: 'switch' L_BR switch_expr R_BR switch_body_wrapper
            {
            root_0 = (Object)adaptor.nil();


            string_literal195=(Token)match(input,207,FOLLOW_207_in_switch_stmt1888); 
            string_literal195_tree = 
            (Object)adaptor.create(string_literal195)
            ;
            adaptor.addChild(root_0, string_literal195_tree);


            L_BR196=(Token)match(input,L_BR,FOLLOW_L_BR_in_switch_stmt1891); 
            L_BR196_tree = 
            (Object)adaptor.create(L_BR196)
            ;
            adaptor.addChild(root_0, L_BR196_tree);


            pushFollow(FOLLOW_switch_expr_in_switch_stmt1894);
            switch_expr197=switch_expr();

            state._fsp--;

            adaptor.addChild(root_0, switch_expr197.getTree());

            R_BR198=(Token)match(input,R_BR,FOLLOW_R_BR_in_switch_stmt1896); 
            R_BR198_tree = 
            (Object)adaptor.create(R_BR198)
            ;
            adaptor.addChild(root_0, R_BR198_tree);


            pushFollow(FOLLOW_switch_body_wrapper_in_switch_stmt1902);
            switch_body_wrapper199=switch_body_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, switch_body_wrapper199.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_stmt"


    public static class switch_body_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_body_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:385:1: switch_body_wrapper : L_FBR switch_body R_FBR -> ^( SWITCH_BODY switch_body ) ;
    public final ObjcmParser.switch_body_wrapper_return switch_body_wrapper() throws RecognitionException {
        ObjcmParser.switch_body_wrapper_return retval = new ObjcmParser.switch_body_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR200=null;
        Token R_FBR202=null;
        ObjcmParser.switch_body_return switch_body201 =null;


        Object L_FBR200_tree=null;
        Object R_FBR202_tree=null;
        RewriteRuleTokenStream stream_R_FBR=new RewriteRuleTokenStream(adaptor,"token R_FBR");
        RewriteRuleTokenStream stream_L_FBR=new RewriteRuleTokenStream(adaptor,"token L_FBR");
        RewriteRuleSubtreeStream stream_switch_body=new RewriteRuleSubtreeStream(adaptor,"rule switch_body");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:386:2: ( L_FBR switch_body R_FBR -> ^( SWITCH_BODY switch_body ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:386:4: L_FBR switch_body R_FBR
            {
            L_FBR200=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_switch_body_wrapper1915);  
            stream_L_FBR.add(L_FBR200);


            pushFollow(FOLLOW_switch_body_in_switch_body_wrapper1917);
            switch_body201=switch_body();

            state._fsp--;

            stream_switch_body.add(switch_body201.getTree());

            R_FBR202=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_switch_body_wrapper1919);  
            stream_R_FBR.add(R_FBR202);


            // AST REWRITE
            // elements: switch_body
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 386:28: -> ^( SWITCH_BODY switch_body )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:386:31: ^( SWITCH_BODY switch_body )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SWITCH_BODY, "SWITCH_BODY")
                , root_1);

                adaptor.addChild(root_1, stream_switch_body.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_body_wrapper"


    public static class switch_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:388:1: switch_body : ( block_internal_full )* ( switch_internal )* ;
    public final ObjcmParser.switch_body_return switch_body() throws RecognitionException {
        ObjcmParser.switch_body_return retval = new ObjcmParser.switch_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_internal_full_return block_internal_full203 =null;

        ObjcmParser.switch_internal_return switch_internal204 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:389:2: ( ( block_internal_full )* ( switch_internal )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:389:4: ( block_internal_full )* ( switch_internal )*
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:389:4: ( block_internal_full )*
            loop43:
            do {
                int alt43=2;
                int LA43_0 = input.LA(1);

                if ( (LA43_0==ASTERISK||LA43_0==BREAK_WORD||LA43_0==CONST_PREFIX||LA43_0==ENUM_PREFIX||LA43_0==ID||LA43_0==L_AND||LA43_0==L_BR||LA43_0==L_KBR||LA43_0==L_MINUS||LA43_0==L_MINUS_MINUS||LA43_0==L_NOT||LA43_0==L_PLUS||LA43_0==L_PLUS_PLUS||LA43_0==L_TILDA||LA43_0==NUMBER||LA43_0==SEMICOLON||(LA43_0 >= SINGLE_OP && LA43_0 <= SIZEOF)||LA43_0==STATIC_PREFIX||(LA43_0 >= STRING_LITERAL && LA43_0 <= STRING_LITERAL3)||LA43_0==STRUCT_PREFIX||LA43_0==VOID||LA43_0==175||LA43_0==182||LA43_0==184||(LA43_0 >= 186 && LA43_0 <= 188)||(LA43_0 >= 190 && LA43_0 <= 191)||LA43_0==194||(LA43_0 >= 196 && LA43_0 <= 202)||(LA43_0 >= 204 && LA43_0 <= 207)||(LA43_0 >= 210 && LA43_0 <= 211)) ) {
                    alt43=1;
                }


                switch (alt43) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:389:4: block_internal_full
            	    {
            	    pushFollow(FOLLOW_block_internal_full_in_switch_body1938);
            	    block_internal_full203=block_internal_full();

            	    state._fsp--;

            	    adaptor.addChild(root_0, block_internal_full203.getTree());

            	    }
            	    break;

            	default :
            	    break loop43;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:390:3: ( switch_internal )*
            loop44:
            do {
                int alt44=2;
                int LA44_0 = input.LA(1);

                if ( (LA44_0==192||LA44_0==195) ) {
                    alt44=1;
                }


                switch (alt44) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:390:3: switch_internal
            	    {
            	    pushFollow(FOLLOW_switch_internal_in_switch_body1943);
            	    switch_internal204=switch_internal();

            	    state._fsp--;

            	    adaptor.addChild(root_0, switch_internal204.getTree());

            	    }
            	    break;

            	default :
            	    break loop44;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_body"


    public static class switch_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:393:1: switch_expr : classical_expr_wrp -> ^( SWITCH_EXPRESSION classical_expr_wrp ) ;
    public final ObjcmParser.switch_expr_return switch_expr() throws RecognitionException {
        ObjcmParser.switch_expr_return retval = new ObjcmParser.switch_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp205 =null;


        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:394:2: ( classical_expr_wrp -> ^( SWITCH_EXPRESSION classical_expr_wrp ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:394:4: classical_expr_wrp
            {
            pushFollow(FOLLOW_classical_expr_wrp_in_switch_expr1956);
            classical_expr_wrp205=classical_expr_wrp();

            state._fsp--;

            stream_classical_expr_wrp.add(classical_expr_wrp205.getTree());

            // AST REWRITE
            // elements: classical_expr_wrp
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 394:23: -> ^( SWITCH_EXPRESSION classical_expr_wrp )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:394:26: ^( SWITCH_EXPRESSION classical_expr_wrp )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SWITCH_EXPRESSION, "SWITCH_EXPRESSION")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_expr"


    public static class switch_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "switch_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:396:1: switch_internal : ( case_stmt_wrapper | default_stmt_wrapper );
    public final ObjcmParser.switch_internal_return switch_internal() throws RecognitionException {
        ObjcmParser.switch_internal_return retval = new ObjcmParser.switch_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.case_stmt_wrapper_return case_stmt_wrapper206 =null;

        ObjcmParser.default_stmt_wrapper_return default_stmt_wrapper207 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:397:2: ( case_stmt_wrapper | default_stmt_wrapper )
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==192) ) {
                alt45=1;
            }
            else if ( (LA45_0==195) ) {
                alt45=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;

            }
            switch (alt45) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:397:4: case_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_case_stmt_wrapper_in_switch_internal1973);
                    case_stmt_wrapper206=case_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, case_stmt_wrapper206.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:398:5: default_stmt_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_default_stmt_wrapper_in_switch_internal1979);
                    default_stmt_wrapper207=default_stmt_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, default_stmt_wrapper207.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "switch_internal"


    public static class case_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:400:1: case_stmt_wrapper : case_stmt -> ^( CASE_STMT case_stmt ) ;
    public final ObjcmParser.case_stmt_wrapper_return case_stmt_wrapper() throws RecognitionException {
        ObjcmParser.case_stmt_wrapper_return retval = new ObjcmParser.case_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.case_stmt_return case_stmt208 =null;


        RewriteRuleSubtreeStream stream_case_stmt=new RewriteRuleSubtreeStream(adaptor,"rule case_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:401:2: ( case_stmt -> ^( CASE_STMT case_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:401:4: case_stmt
            {
            pushFollow(FOLLOW_case_stmt_in_case_stmt_wrapper1988);
            case_stmt208=case_stmt();

            state._fsp--;

            stream_case_stmt.add(case_stmt208.getTree());

            // AST REWRITE
            // elements: case_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 401:14: -> ^( CASE_STMT case_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:401:17: ^( CASE_STMT case_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CASE_STMT, "CASE_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_case_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_stmt_wrapper"


    public static class case_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:403:1: case_stmt : 'case' case_expr_wrapper COLON ( case_body_wrapper )? ;
    public final ObjcmParser.case_stmt_return case_stmt() throws RecognitionException {
        ObjcmParser.case_stmt_return retval = new ObjcmParser.case_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal209=null;
        Token COLON211=null;
        ObjcmParser.case_expr_wrapper_return case_expr_wrapper210 =null;

        ObjcmParser.case_body_wrapper_return case_body_wrapper212 =null;


        Object string_literal209_tree=null;
        Object COLON211_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:404:2: ( 'case' case_expr_wrapper COLON ( case_body_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:404:4: 'case' case_expr_wrapper COLON ( case_body_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            string_literal209=(Token)match(input,192,FOLLOW_192_in_case_stmt2005); 
            string_literal209_tree = 
            (Object)adaptor.create(string_literal209)
            ;
            adaptor.addChild(root_0, string_literal209_tree);


            pushFollow(FOLLOW_case_expr_wrapper_in_case_stmt2008);
            case_expr_wrapper210=case_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, case_expr_wrapper210.getTree());

            COLON211=(Token)match(input,COLON,FOLLOW_COLON_in_case_stmt2011); 
            COLON211_tree = 
            (Object)adaptor.create(COLON211)
            ;
            adaptor.addChild(root_0, COLON211_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:405:3: ( case_body_wrapper )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==ASTERISK||LA46_0==BREAK_WORD||LA46_0==CONST_PREFIX||LA46_0==ENUM_PREFIX||LA46_0==ID||LA46_0==L_AND||LA46_0==L_BR||(LA46_0 >= L_FBR && LA46_0 <= L_KBR)||LA46_0==L_MINUS||LA46_0==L_MINUS_MINUS||LA46_0==L_NOT||LA46_0==L_PLUS||LA46_0==L_PLUS_PLUS||LA46_0==L_TILDA||LA46_0==NUMBER||LA46_0==SEMICOLON||(LA46_0 >= SINGLE_OP && LA46_0 <= SIZEOF)||LA46_0==STATIC_PREFIX||(LA46_0 >= STRING_LITERAL && LA46_0 <= STRING_LITERAL3)||LA46_0==STRUCT_PREFIX||LA46_0==VOID||LA46_0==175||LA46_0==182||LA46_0==184||(LA46_0 >= 186 && LA46_0 <= 188)||(LA46_0 >= 190 && LA46_0 <= 191)||LA46_0==194||(LA46_0 >= 196 && LA46_0 <= 202)||(LA46_0 >= 204 && LA46_0 <= 207)||(LA46_0 >= 210 && LA46_0 <= 211)) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:405:3: case_body_wrapper
                    {
                    pushFollow(FOLLOW_case_body_wrapper_in_case_stmt2016);
                    case_body_wrapper212=case_body_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, case_body_wrapper212.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_stmt"


    public static class case_body_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_body_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:408:1: case_body_wrapper : case_body -> ^( CASE_BODY case_body ) ;
    public final ObjcmParser.case_body_wrapper_return case_body_wrapper() throws RecognitionException {
        ObjcmParser.case_body_wrapper_return retval = new ObjcmParser.case_body_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.case_body_return case_body213 =null;


        RewriteRuleSubtreeStream stream_case_body=new RewriteRuleSubtreeStream(adaptor,"rule case_body");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:409:2: ( case_body -> ^( CASE_BODY case_body ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:409:4: case_body
            {
            pushFollow(FOLLOW_case_body_in_case_body_wrapper2030);
            case_body213=case_body();

            state._fsp--;

            stream_case_body.add(case_body213.getTree());

            // AST REWRITE
            // elements: case_body
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 409:14: -> ^( CASE_BODY case_body )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:409:17: ^( CASE_BODY case_body )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CASE_BODY, "CASE_BODY")
                , root_1);

                adaptor.addChild(root_1, stream_case_body.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_body_wrapper"


    public static class case_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:411:1: case_body : ( block_break | ( block_internal_full )+ );
    public final ObjcmParser.case_body_return case_body() throws RecognitionException {
        ObjcmParser.case_body_return retval = new ObjcmParser.case_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_break_return block_break214 =null;

        ObjcmParser.block_internal_full_return block_internal_full215 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:412:2: ( block_break | ( block_internal_full )+ )
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==L_FBR) ) {
                alt48=1;
            }
            else if ( (LA48_0==ASTERISK||LA48_0==BREAK_WORD||LA48_0==CONST_PREFIX||LA48_0==ENUM_PREFIX||LA48_0==ID||LA48_0==L_AND||LA48_0==L_BR||LA48_0==L_KBR||LA48_0==L_MINUS||LA48_0==L_MINUS_MINUS||LA48_0==L_NOT||LA48_0==L_PLUS||LA48_0==L_PLUS_PLUS||LA48_0==L_TILDA||LA48_0==NUMBER||LA48_0==SEMICOLON||(LA48_0 >= SINGLE_OP && LA48_0 <= SIZEOF)||LA48_0==STATIC_PREFIX||(LA48_0 >= STRING_LITERAL && LA48_0 <= STRING_LITERAL3)||LA48_0==STRUCT_PREFIX||LA48_0==VOID||LA48_0==175||LA48_0==182||LA48_0==184||(LA48_0 >= 186 && LA48_0 <= 188)||(LA48_0 >= 190 && LA48_0 <= 191)||LA48_0==194||(LA48_0 >= 196 && LA48_0 <= 202)||(LA48_0 >= 204 && LA48_0 <= 207)||(LA48_0 >= 210 && LA48_0 <= 211)) ) {
                alt48=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;

            }
            switch (alt48) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:412:4: block_break
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_block_break_in_case_body2049);
                    block_break214=block_break();

                    state._fsp--;

                    adaptor.addChild(root_0, block_break214.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:413:5: ( block_internal_full )+
                    {
                    root_0 = (Object)adaptor.nil();


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:413:5: ( block_internal_full )+
                    int cnt47=0;
                    loop47:
                    do {
                        int alt47=2;
                        int LA47_0 = input.LA(1);

                        if ( (LA47_0==ASTERISK||LA47_0==BREAK_WORD||LA47_0==CONST_PREFIX||LA47_0==ENUM_PREFIX||LA47_0==ID||LA47_0==L_AND||LA47_0==L_BR||LA47_0==L_KBR||LA47_0==L_MINUS||LA47_0==L_MINUS_MINUS||LA47_0==L_NOT||LA47_0==L_PLUS||LA47_0==L_PLUS_PLUS||LA47_0==L_TILDA||LA47_0==NUMBER||LA47_0==SEMICOLON||(LA47_0 >= SINGLE_OP && LA47_0 <= SIZEOF)||LA47_0==STATIC_PREFIX||(LA47_0 >= STRING_LITERAL && LA47_0 <= STRING_LITERAL3)||LA47_0==STRUCT_PREFIX||LA47_0==VOID||LA47_0==175||LA47_0==182||LA47_0==184||(LA47_0 >= 186 && LA47_0 <= 188)||(LA47_0 >= 190 && LA47_0 <= 191)||LA47_0==194||(LA47_0 >= 196 && LA47_0 <= 202)||(LA47_0 >= 204 && LA47_0 <= 207)||(LA47_0 >= 210 && LA47_0 <= 211)) ) {
                            alt47=1;
                        }


                        switch (alt47) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:413:5: block_internal_full
                    	    {
                    	    pushFollow(FOLLOW_block_internal_full_in_case_body2056);
                    	    block_internal_full215=block_internal_full();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, block_internal_full215.getTree());

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt47 >= 1 ) break loop47;
                                EarlyExitException eee =
                                    new EarlyExitException(47, input);
                                throw eee;
                        }
                        cnt47++;
                    } while (true);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_body"


    public static class case_expr_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_expr_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:416:1: case_expr_wrapper : case_expr -> ^( CASE_EXPR case_expr ) ;
    public final ObjcmParser.case_expr_wrapper_return case_expr_wrapper() throws RecognitionException {
        ObjcmParser.case_expr_wrapper_return retval = new ObjcmParser.case_expr_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.case_expr_return case_expr216 =null;


        RewriteRuleSubtreeStream stream_case_expr=new RewriteRuleSubtreeStream(adaptor,"rule case_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:417:2: ( case_expr -> ^( CASE_EXPR case_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:417:4: case_expr
            {
            pushFollow(FOLLOW_case_expr_in_case_expr_wrapper2072);
            case_expr216=case_expr();

            state._fsp--;

            stream_case_expr.add(case_expr216.getTree());

            // AST REWRITE
            // elements: case_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 417:14: -> ^( CASE_EXPR case_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:417:17: ^( CASE_EXPR case_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CASE_EXPR, "CASE_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_case_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_expr_wrapper"


    public static class case_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "case_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:419:1: case_expr : ( const_expr | ID );
    public final ObjcmParser.case_expr_return case_expr() throws RecognitionException {
        ObjcmParser.case_expr_return retval = new ObjcmParser.case_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID218=null;
        ObjcmParser.const_expr_return const_expr217 =null;


        Object ID218_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:420:2: ( const_expr | ID )
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==NUMBER||(LA49_0 >= STRING_LITERAL && LA49_0 <= STRING_LITERAL3)||LA49_0==188||LA49_0==204) ) {
                alt49=1;
            }
            else if ( (LA49_0==ID) ) {
                alt49=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 49, 0, input);

                throw nvae;

            }
            switch (alt49) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:420:4: const_expr
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_const_expr_in_case_expr2094);
                    const_expr217=const_expr();

                    state._fsp--;

                    adaptor.addChild(root_0, const_expr217.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:421:5: ID
                    {
                    root_0 = (Object)adaptor.nil();


                    ID218=(Token)match(input,ID,FOLLOW_ID_in_case_expr2101); 
                    ID218_tree = 
                    (Object)adaptor.create(ID218)
                    ;
                    adaptor.addChild(root_0, ID218_tree);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "case_expr"


    public static class block_break_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_break"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:423:1: block_break : block_case ( single_operators )? ;
    public final ObjcmParser.block_break_return block_break() throws RecognitionException {
        ObjcmParser.block_break_return retval = new ObjcmParser.block_break_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_case_return block_case219 =null;

        ObjcmParser.single_operators_return single_operators220 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:424:2: ( block_case ( single_operators )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:424:4: block_case ( single_operators )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_block_case_in_block_break2112);
            block_case219=block_case();

            state._fsp--;

            adaptor.addChild(root_0, block_case219.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:424:15: ( single_operators )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==BREAK_WORD||LA50_0==SINGLE_OP) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:424:15: single_operators
                    {
                    pushFollow(FOLLOW_single_operators_in_block_break2114);
                    single_operators220=single_operators();

                    state._fsp--;

                    adaptor.addChild(root_0, single_operators220.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_break"


    public static class default_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "default_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:427:1: default_stmt_wrapper : default_stmt -> ^( DEFAULT_STMT default_stmt ) ;
    public final ObjcmParser.default_stmt_wrapper_return default_stmt_wrapper() throws RecognitionException {
        ObjcmParser.default_stmt_wrapper_return retval = new ObjcmParser.default_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.default_stmt_return default_stmt221 =null;


        RewriteRuleSubtreeStream stream_default_stmt=new RewriteRuleSubtreeStream(adaptor,"rule default_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:428:2: ( default_stmt -> ^( DEFAULT_STMT default_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:428:4: default_stmt
            {
            pushFollow(FOLLOW_default_stmt_in_default_stmt_wrapper2126);
            default_stmt221=default_stmt();

            state._fsp--;

            stream_default_stmt.add(default_stmt221.getTree());

            // AST REWRITE
            // elements: default_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 428:17: -> ^( DEFAULT_STMT default_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:428:20: ^( DEFAULT_STMT default_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(DEFAULT_STMT, "DEFAULT_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_default_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "default_stmt_wrapper"


    public static class default_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "default_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:430:1: default_stmt : 'default' COLON ( default_body_wrapper )? ;
    public final ObjcmParser.default_stmt_return default_stmt() throws RecognitionException {
        ObjcmParser.default_stmt_return retval = new ObjcmParser.default_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal222=null;
        Token COLON223=null;
        ObjcmParser.default_body_wrapper_return default_body_wrapper224 =null;


        Object string_literal222_tree=null;
        Object COLON223_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:431:2: ( 'default' COLON ( default_body_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:431:4: 'default' COLON ( default_body_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            string_literal222=(Token)match(input,195,FOLLOW_195_in_default_stmt2143); 
            string_literal222_tree = 
            (Object)adaptor.create(string_literal222)
            ;
            adaptor.addChild(root_0, string_literal222_tree);


            COLON223=(Token)match(input,COLON,FOLLOW_COLON_in_default_stmt2146); 
            COLON223_tree = 
            (Object)adaptor.create(COLON223)
            ;
            adaptor.addChild(root_0, COLON223_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:432:3: ( default_body_wrapper )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==ASTERISK||LA51_0==BREAK_WORD||LA51_0==CONST_PREFIX||LA51_0==ENUM_PREFIX||LA51_0==ID||LA51_0==L_AND||LA51_0==L_BR||(LA51_0 >= L_FBR && LA51_0 <= L_KBR)||LA51_0==L_MINUS||LA51_0==L_MINUS_MINUS||LA51_0==L_NOT||LA51_0==L_PLUS||LA51_0==L_PLUS_PLUS||LA51_0==L_TILDA||LA51_0==NUMBER||LA51_0==SEMICOLON||(LA51_0 >= SINGLE_OP && LA51_0 <= SIZEOF)||LA51_0==STATIC_PREFIX||(LA51_0 >= STRING_LITERAL && LA51_0 <= STRING_LITERAL3)||LA51_0==STRUCT_PREFIX||LA51_0==VOID||LA51_0==175||LA51_0==182||LA51_0==184||(LA51_0 >= 186 && LA51_0 <= 188)||(LA51_0 >= 190 && LA51_0 <= 191)||LA51_0==194||(LA51_0 >= 196 && LA51_0 <= 202)||(LA51_0 >= 204 && LA51_0 <= 207)||(LA51_0 >= 210 && LA51_0 <= 211)) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:432:3: default_body_wrapper
                    {
                    pushFollow(FOLLOW_default_body_wrapper_in_default_stmt2151);
                    default_body_wrapper224=default_body_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, default_body_wrapper224.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "default_stmt"


    public static class default_body_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "default_body_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:435:1: default_body_wrapper : default_body -> ^( DEFAULT_BODY default_body ) ;
    public final ObjcmParser.default_body_wrapper_return default_body_wrapper() throws RecognitionException {
        ObjcmParser.default_body_wrapper_return retval = new ObjcmParser.default_body_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.default_body_return default_body225 =null;


        RewriteRuleSubtreeStream stream_default_body=new RewriteRuleSubtreeStream(adaptor,"rule default_body");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:436:2: ( default_body -> ^( DEFAULT_BODY default_body ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:436:4: default_body
            {
            pushFollow(FOLLOW_default_body_in_default_body_wrapper2164);
            default_body225=default_body();

            state._fsp--;

            stream_default_body.add(default_body225.getTree());

            // AST REWRITE
            // elements: default_body
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 436:17: -> ^( DEFAULT_BODY default_body )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:436:20: ^( DEFAULT_BODY default_body )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(DEFAULT_BODY, "DEFAULT_BODY")
                , root_1);

                adaptor.addChild(root_1, stream_default_body.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "default_body_wrapper"


    public static class default_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "default_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:439:1: default_body : ( block_break | ( block_internal_full )+ );
    public final ObjcmParser.default_body_return default_body() throws RecognitionException {
        ObjcmParser.default_body_return retval = new ObjcmParser.default_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_break_return block_break226 =null;

        ObjcmParser.block_internal_full_return block_internal_full227 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:440:2: ( block_break | ( block_internal_full )+ )
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==L_FBR) ) {
                alt53=1;
            }
            else if ( (LA53_0==ASTERISK||LA53_0==BREAK_WORD||LA53_0==CONST_PREFIX||LA53_0==ENUM_PREFIX||LA53_0==ID||LA53_0==L_AND||LA53_0==L_BR||LA53_0==L_KBR||LA53_0==L_MINUS||LA53_0==L_MINUS_MINUS||LA53_0==L_NOT||LA53_0==L_PLUS||LA53_0==L_PLUS_PLUS||LA53_0==L_TILDA||LA53_0==NUMBER||LA53_0==SEMICOLON||(LA53_0 >= SINGLE_OP && LA53_0 <= SIZEOF)||LA53_0==STATIC_PREFIX||(LA53_0 >= STRING_LITERAL && LA53_0 <= STRING_LITERAL3)||LA53_0==STRUCT_PREFIX||LA53_0==VOID||LA53_0==175||LA53_0==182||LA53_0==184||(LA53_0 >= 186 && LA53_0 <= 188)||(LA53_0 >= 190 && LA53_0 <= 191)||LA53_0==194||(LA53_0 >= 196 && LA53_0 <= 202)||(LA53_0 >= 204 && LA53_0 <= 207)||(LA53_0 >= 210 && LA53_0 <= 211)) ) {
                alt53=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;

            }
            switch (alt53) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:440:4: block_break
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_block_break_in_default_body2184);
                    block_break226=block_break();

                    state._fsp--;

                    adaptor.addChild(root_0, block_break226.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:441:5: ( block_internal_full )+
                    {
                    root_0 = (Object)adaptor.nil();


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:441:5: ( block_internal_full )+
                    int cnt52=0;
                    loop52:
                    do {
                        int alt52=2;
                        int LA52_0 = input.LA(1);

                        if ( (LA52_0==ASTERISK||LA52_0==BREAK_WORD||LA52_0==CONST_PREFIX||LA52_0==ENUM_PREFIX||LA52_0==ID||LA52_0==L_AND||LA52_0==L_BR||LA52_0==L_KBR||LA52_0==L_MINUS||LA52_0==L_MINUS_MINUS||LA52_0==L_NOT||LA52_0==L_PLUS||LA52_0==L_PLUS_PLUS||LA52_0==L_TILDA||LA52_0==NUMBER||LA52_0==SEMICOLON||(LA52_0 >= SINGLE_OP && LA52_0 <= SIZEOF)||LA52_0==STATIC_PREFIX||(LA52_0 >= STRING_LITERAL && LA52_0 <= STRING_LITERAL3)||LA52_0==STRUCT_PREFIX||LA52_0==VOID||LA52_0==175||LA52_0==182||LA52_0==184||(LA52_0 >= 186 && LA52_0 <= 188)||(LA52_0 >= 190 && LA52_0 <= 191)||LA52_0==194||(LA52_0 >= 196 && LA52_0 <= 202)||(LA52_0 >= 204 && LA52_0 <= 207)||(LA52_0 >= 210 && LA52_0 <= 211)) ) {
                            alt52=1;
                        }


                        switch (alt52) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:441:5: block_internal_full
                    	    {
                    	    pushFollow(FOLLOW_block_internal_full_in_default_body2190);
                    	    block_internal_full227=block_internal_full();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, block_internal_full227.getTree());

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt52 >= 1 ) break loop52;
                                EarlyExitException eee =
                                    new EarlyExitException(52, input);
                                throw eee;
                        }
                        cnt52++;
                    } while (true);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "default_body"


    public static class single_operators_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "single_operators"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:444:1: single_operators : ( SINGLE_OP | break_wrapper );
    public final ObjcmParser.single_operators_return single_operators() throws RecognitionException {
        ObjcmParser.single_operators_return retval = new ObjcmParser.single_operators_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SINGLE_OP228=null;
        ObjcmParser.break_wrapper_return break_wrapper229 =null;


        Object SINGLE_OP228_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:445:2: ( SINGLE_OP | break_wrapper )
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==SINGLE_OP) ) {
                alt54=1;
            }
            else if ( (LA54_0==BREAK_WORD) ) {
                alt54=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;

            }
            switch (alt54) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:445:4: SINGLE_OP
                    {
                    root_0 = (Object)adaptor.nil();


                    SINGLE_OP228=(Token)match(input,SINGLE_OP,FOLLOW_SINGLE_OP_in_single_operators2205); 
                    SINGLE_OP228_tree = 
                    (Object)adaptor.create(SINGLE_OP228)
                    ;
                    adaptor.addChild(root_0, SINGLE_OP228_tree);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:446:5: break_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_break_wrapper_in_single_operators2212);
                    break_wrapper229=break_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, break_wrapper229.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "single_operators"


    public static class break_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "break_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:449:1: break_wrapper : break_stmt -> ^( BREAK break_stmt ) ;
    public final ObjcmParser.break_wrapper_return break_wrapper() throws RecognitionException {
        ObjcmParser.break_wrapper_return retval = new ObjcmParser.break_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.break_stmt_return break_stmt230 =null;


        RewriteRuleSubtreeStream stream_break_stmt=new RewriteRuleSubtreeStream(adaptor,"rule break_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:450:2: ( break_stmt -> ^( BREAK break_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:450:4: break_stmt
            {
            pushFollow(FOLLOW_break_stmt_in_break_wrapper2224);
            break_stmt230=break_stmt();

            state._fsp--;

            stream_break_stmt.add(break_stmt230.getTree());

            // AST REWRITE
            // elements: break_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 450:15: -> ^( BREAK break_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:450:18: ^( BREAK break_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(BREAK, "BREAK")
                , root_1);

                adaptor.addChild(root_1, stream_break_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "break_wrapper"


    public static class break_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "break_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:452:1: break_stmt : BREAK_WORD SEMICOLON ;
    public final ObjcmParser.break_stmt_return break_stmt() throws RecognitionException {
        ObjcmParser.break_stmt_return retval = new ObjcmParser.break_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token BREAK_WORD231=null;
        Token SEMICOLON232=null;

        Object BREAK_WORD231_tree=null;
        Object SEMICOLON232_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:453:2: ( BREAK_WORD SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:453:4: BREAK_WORD SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            BREAK_WORD231=(Token)match(input,BREAK_WORD,FOLLOW_BREAK_WORD_in_break_stmt2242); 
            BREAK_WORD231_tree = 
            (Object)adaptor.create(BREAK_WORD231)
            ;
            adaptor.addChild(root_0, BREAK_WORD231_tree);


            SEMICOLON232=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_break_stmt2245); 
            SEMICOLON232_tree = 
            (Object)adaptor.create(SEMICOLON232)
            ;
            adaptor.addChild(root_0, SEMICOLON232_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "break_stmt"


    public static class do_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "do_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:455:1: do_stmt : 'do' if_stmt_block 'while' L_BR while_expr R_BR ;
    public final ObjcmParser.do_stmt_return do_stmt() throws RecognitionException {
        ObjcmParser.do_stmt_return retval = new ObjcmParser.do_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal233=null;
        Token string_literal235=null;
        Token L_BR236=null;
        Token R_BR238=null;
        ObjcmParser.if_stmt_block_return if_stmt_block234 =null;

        ObjcmParser.while_expr_return while_expr237 =null;


        Object string_literal233_tree=null;
        Object string_literal235_tree=null;
        Object L_BR236_tree=null;
        Object R_BR238_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:455:9: ( 'do' if_stmt_block 'while' L_BR while_expr R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:455:11: 'do' if_stmt_block 'while' L_BR while_expr R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal233=(Token)match(input,196,FOLLOW_196_in_do_stmt2255); 
            string_literal233_tree = 
            (Object)adaptor.create(string_literal233)
            ;
            adaptor.addChild(root_0, string_literal233_tree);


            pushFollow(FOLLOW_if_stmt_block_in_do_stmt2258);
            if_stmt_block234=if_stmt_block();

            state._fsp--;

            adaptor.addChild(root_0, if_stmt_block234.getTree());

            string_literal235=(Token)match(input,211,FOLLOW_211_in_do_stmt2261); 
            string_literal235_tree = 
            (Object)adaptor.create(string_literal235)
            ;
            adaptor.addChild(root_0, string_literal235_tree);


            L_BR236=(Token)match(input,L_BR,FOLLOW_L_BR_in_do_stmt2264); 
            L_BR236_tree = 
            (Object)adaptor.create(L_BR236)
            ;
            adaptor.addChild(root_0, L_BR236_tree);


            pushFollow(FOLLOW_while_expr_in_do_stmt2267);
            while_expr237=while_expr();

            state._fsp--;

            adaptor.addChild(root_0, while_expr237.getTree());

            R_BR238=(Token)match(input,R_BR,FOLLOW_R_BR_in_do_stmt2269); 
            R_BR238_tree = 
            (Object)adaptor.create(R_BR238)
            ;
            adaptor.addChild(root_0, R_BR238_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "do_stmt"


    public static class while_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "while_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:457:1: while_stmt_wrapper : while_stmt -> ^( WHILE_STMT while_stmt ) ;
    public final ObjcmParser.while_stmt_wrapper_return while_stmt_wrapper() throws RecognitionException {
        ObjcmParser.while_stmt_wrapper_return retval = new ObjcmParser.while_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.while_stmt_return while_stmt239 =null;


        RewriteRuleSubtreeStream stream_while_stmt=new RewriteRuleSubtreeStream(adaptor,"rule while_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:458:2: ( while_stmt -> ^( WHILE_STMT while_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:458:4: while_stmt
            {
            pushFollow(FOLLOW_while_stmt_in_while_stmt_wrapper2278);
            while_stmt239=while_stmt();

            state._fsp--;

            stream_while_stmt.add(while_stmt239.getTree());

            // AST REWRITE
            // elements: while_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 458:15: -> ^( WHILE_STMT while_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:458:18: ^( WHILE_STMT while_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(WHILE_STMT, "WHILE_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_while_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "while_stmt_wrapper"


    public static class while_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "while_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:461:1: while_stmt : 'while' L_BR while_expr R_BR if_stmt_block_wrapper ;
    public final ObjcmParser.while_stmt_return while_stmt() throws RecognitionException {
        ObjcmParser.while_stmt_return retval = new ObjcmParser.while_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal240=null;
        Token L_BR241=null;
        Token R_BR243=null;
        ObjcmParser.while_expr_return while_expr242 =null;

        ObjcmParser.if_stmt_block_wrapper_return if_stmt_block_wrapper244 =null;


        Object string_literal240_tree=null;
        Object L_BR241_tree=null;
        Object R_BR243_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:462:2: ( 'while' L_BR while_expr R_BR if_stmt_block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:462:4: 'while' L_BR while_expr R_BR if_stmt_block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            string_literal240=(Token)match(input,211,FOLLOW_211_in_while_stmt2297); 
            string_literal240_tree = 
            (Object)adaptor.create(string_literal240)
            ;
            adaptor.addChild(root_0, string_literal240_tree);


            L_BR241=(Token)match(input,L_BR,FOLLOW_L_BR_in_while_stmt2300); 
            L_BR241_tree = 
            (Object)adaptor.create(L_BR241)
            ;
            adaptor.addChild(root_0, L_BR241_tree);


            pushFollow(FOLLOW_while_expr_in_while_stmt2303);
            while_expr242=while_expr();

            state._fsp--;

            adaptor.addChild(root_0, while_expr242.getTree());

            R_BR243=(Token)match(input,R_BR,FOLLOW_R_BR_in_while_stmt2305); 
            R_BR243_tree = 
            (Object)adaptor.create(R_BR243)
            ;
            adaptor.addChild(root_0, R_BR243_tree);


            pushFollow(FOLLOW_if_stmt_block_wrapper_in_while_stmt2308);
            if_stmt_block_wrapper244=if_stmt_block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, if_stmt_block_wrapper244.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "while_stmt"


    public static class while_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "while_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:464:1: while_expr : classical_expr_wrp -> ^( WHILE_EXPR classical_expr_wrp ) ;
    public final ObjcmParser.while_expr_return while_expr() throws RecognitionException {
        ObjcmParser.while_expr_return retval = new ObjcmParser.while_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp245 =null;


        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:465:2: ( classical_expr_wrp -> ^( WHILE_EXPR classical_expr_wrp ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:465:5: classical_expr_wrp
            {
            pushFollow(FOLLOW_classical_expr_wrp_in_while_expr2321);
            classical_expr_wrp245=classical_expr_wrp();

            state._fsp--;

            stream_classical_expr_wrp.add(classical_expr_wrp245.getTree());

            // AST REWRITE
            // elements: classical_expr_wrp
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 465:24: -> ^( WHILE_EXPR classical_expr_wrp )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:465:27: ^( WHILE_EXPR classical_expr_wrp )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(WHILE_EXPR, "WHILE_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "while_expr"


    public static class for_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:467:1: for_stmt_wrapper : for_stmt -> ^( FOR_STMT for_stmt ) ;
    public final ObjcmParser.for_stmt_wrapper_return for_stmt_wrapper() throws RecognitionException {
        ObjcmParser.for_stmt_wrapper_return retval = new ObjcmParser.for_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.for_stmt_return for_stmt246 =null;


        RewriteRuleSubtreeStream stream_for_stmt=new RewriteRuleSubtreeStream(adaptor,"rule for_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:468:2: ( for_stmt -> ^( FOR_STMT for_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:468:4: for_stmt
            {
            pushFollow(FOLLOW_for_stmt_in_for_stmt_wrapper2340);
            for_stmt246=for_stmt();

            state._fsp--;

            stream_for_stmt.add(for_stmt246.getTree());

            // AST REWRITE
            // elements: for_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 468:13: -> ^( FOR_STMT for_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:468:16: ^( FOR_STMT for_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FOR_STMT, "FOR_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_for_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt_wrapper"


    public static class for_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:470:1: for_stmt : 'for' L_BR for_stmt_expr_wrapper R_BR if_stmt_block ;
    public final ObjcmParser.for_stmt_return for_stmt() throws RecognitionException {
        ObjcmParser.for_stmt_return retval = new ObjcmParser.for_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal247=null;
        Token L_BR248=null;
        Token R_BR250=null;
        ObjcmParser.for_stmt_expr_wrapper_return for_stmt_expr_wrapper249 =null;

        ObjcmParser.if_stmt_block_return if_stmt_block251 =null;


        Object string_literal247_tree=null;
        Object L_BR248_tree=null;
        Object R_BR250_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:470:9: ( 'for' L_BR for_stmt_expr_wrapper R_BR if_stmt_block )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:470:11: 'for' L_BR for_stmt_expr_wrapper R_BR if_stmt_block
            {
            root_0 = (Object)adaptor.nil();


            string_literal247=(Token)match(input,199,FOLLOW_199_in_for_stmt2357); 
            string_literal247_tree = 
            (Object)adaptor.create(string_literal247)
            ;
            adaptor.addChild(root_0, string_literal247_tree);


            L_BR248=(Token)match(input,L_BR,FOLLOW_L_BR_in_for_stmt2360); 
            L_BR248_tree = 
            (Object)adaptor.create(L_BR248)
            ;
            adaptor.addChild(root_0, L_BR248_tree);


            pushFollow(FOLLOW_for_stmt_expr_wrapper_in_for_stmt2363);
            for_stmt_expr_wrapper249=for_stmt_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, for_stmt_expr_wrapper249.getTree());

            R_BR250=(Token)match(input,R_BR,FOLLOW_R_BR_in_for_stmt2365); 
            R_BR250_tree = 
            (Object)adaptor.create(R_BR250)
            ;
            adaptor.addChild(root_0, R_BR250_tree);


            pushFollow(FOLLOW_if_stmt_block_in_for_stmt2368);
            if_stmt_block251=if_stmt_block();

            state._fsp--;

            adaptor.addChild(root_0, if_stmt_block251.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt"


    public static class for_stmt_expr_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt_expr_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:473:1: for_stmt_expr_wrapper : for_stmt_expr -> ^( FOR_STMT_EXPR for_stmt_expr ) ;
    public final ObjcmParser.for_stmt_expr_wrapper_return for_stmt_expr_wrapper() throws RecognitionException {
        ObjcmParser.for_stmt_expr_wrapper_return retval = new ObjcmParser.for_stmt_expr_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.for_stmt_expr_return for_stmt_expr252 =null;


        RewriteRuleSubtreeStream stream_for_stmt_expr=new RewriteRuleSubtreeStream(adaptor,"rule for_stmt_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:474:2: ( for_stmt_expr -> ^( FOR_STMT_EXPR for_stmt_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:474:4: for_stmt_expr
            {
            pushFollow(FOLLOW_for_stmt_expr_in_for_stmt_expr_wrapper2380);
            for_stmt_expr252=for_stmt_expr();

            state._fsp--;

            stream_for_stmt_expr.add(for_stmt_expr252.getTree());

            // AST REWRITE
            // elements: for_stmt_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 474:18: -> ^( FOR_STMT_EXPR for_stmt_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:474:21: ^( FOR_STMT_EXPR for_stmt_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FOR_STMT_EXPR, "FOR_STMT_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_for_stmt_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt_expr_wrapper"


    public static class for_stmt_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:476:1: for_stmt_expr : ( full_expr_wrapper ( for_stmt_int1 | ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) ) | for_stmt_int2 ) | for_stmt_int2 );
    public final ObjcmParser.for_stmt_expr_return for_stmt_expr() throws RecognitionException {
        ObjcmParser.for_stmt_expr_return retval = new ObjcmParser.for_stmt_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.full_expr_wrapper_return full_expr_wrapper253 =null;

        ObjcmParser.for_stmt_int1_return for_stmt_int1254 =null;

        ObjcmParser.full_expr2_return full_expr2255 =null;

        ObjcmParser.for_stmt_int1_return for_stmt_int1256 =null;

        ObjcmParser.for_stmt_int2_return for_stmt_int2257 =null;

        ObjcmParser.for_stmt_int2_return for_stmt_int2258 =null;

        ObjcmParser.for_stmt_int2_return for_stmt_int2259 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:2: ( full_expr_wrapper ( for_stmt_int1 | ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) ) | for_stmt_int2 ) | for_stmt_int2 )
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==ASTERISK||LA57_0==ID||LA57_0==L_AND||LA57_0==L_BR||LA57_0==L_KBR||LA57_0==L_MINUS||LA57_0==L_MINUS_MINUS||LA57_0==L_NOT||LA57_0==L_PLUS||LA57_0==L_PLUS_PLUS||LA57_0==L_TILDA||LA57_0==NUMBER||LA57_0==SIZEOF||(LA57_0 >= STRING_LITERAL && LA57_0 <= STRING_LITERAL3)||LA57_0==175||LA57_0==182||LA57_0==184||LA57_0==188||LA57_0==191||LA57_0==194||LA57_0==202||(LA57_0 >= 204 && LA57_0 <= 205)||LA57_0==210) ) {
                alt57=1;
            }
            else if ( (LA57_0==SEMICOLON) ) {
                alt57=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;

            }
            switch (alt57) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:4: full_expr_wrapper ( for_stmt_int1 | ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) ) | for_stmt_int2 )
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_full_expr_wrapper_in_for_stmt_expr2399);
                    full_expr_wrapper253=full_expr_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, full_expr_wrapper253.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:22: ( for_stmt_int1 | ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) ) | for_stmt_int2 )
                    int alt56=3;
                    alt56 = dfa56.predict(input);
                    switch (alt56) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:23: for_stmt_int1
                            {
                            pushFollow(FOLLOW_for_stmt_int1_in_for_stmt_expr2402);
                            for_stmt_int1254=for_stmt_int1();

                            state._fsp--;

                            adaptor.addChild(root_0, for_stmt_int1254.getTree());

                            }
                            break;
                        case 2 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:39: ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) )
                            {
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:39: ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) )
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:40: full_expr2 ( for_stmt_int1 | for_stmt_int2 )
                            {
                            pushFollow(FOLLOW_full_expr2_in_for_stmt_expr2407);
                            full_expr2255=full_expr2();

                            state._fsp--;

                            adaptor.addChild(root_0, full_expr2255.getTree());

                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:51: ( for_stmt_int1 | for_stmt_int2 )
                            int alt55=2;
                            int LA55_0 = input.LA(1);

                            if ( (LA55_0==202) ) {
                                alt55=1;
                            }
                            else if ( (LA55_0==SEMICOLON) ) {
                                alt55=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 55, 0, input);

                                throw nvae;

                            }
                            switch (alt55) {
                                case 1 :
                                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:52: for_stmt_int1
                                    {
                                    pushFollow(FOLLOW_for_stmt_int1_in_for_stmt_expr2410);
                                    for_stmt_int1256=for_stmt_int1();

                                    state._fsp--;

                                    adaptor.addChild(root_0, for_stmt_int1256.getTree());

                                    }
                                    break;
                                case 2 :
                                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:68: for_stmt_int2
                                    {
                                    pushFollow(FOLLOW_for_stmt_int2_in_for_stmt_expr2414);
                                    for_stmt_int2257=for_stmt_int2();

                                    state._fsp--;

                                    adaptor.addChild(root_0, for_stmt_int2257.getTree());

                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 3 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:477:86: for_stmt_int2
                            {
                            pushFollow(FOLLOW_for_stmt_int2_in_for_stmt_expr2420);
                            for_stmt_int2258=for_stmt_int2();

                            state._fsp--;

                            adaptor.addChild(root_0, for_stmt_int2258.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:478:4: for_stmt_int2
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_for_stmt_int2_in_for_stmt_expr2426);
                    for_stmt_int2259=for_stmt_int2();

                    state._fsp--;

                    adaptor.addChild(root_0, for_stmt_int2259.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt_expr"


    public static class for_stmt_int1_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt_int1"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:481:1: for_stmt_int1 : 'in' object_wrapped2 -> ^( FOR_IN_STMT object_wrapped2 ) ;
    public final ObjcmParser.for_stmt_int1_return for_stmt_int1() throws RecognitionException {
        ObjcmParser.for_stmt_int1_return retval = new ObjcmParser.for_stmt_int1_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal260=null;
        ObjcmParser.object_wrapped2_return object_wrapped2261 =null;


        Object string_literal260_tree=null;
        RewriteRuleTokenStream stream_202=new RewriteRuleTokenStream(adaptor,"token 202");
        RewriteRuleSubtreeStream stream_object_wrapped2=new RewriteRuleSubtreeStream(adaptor,"rule object_wrapped2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:482:2: ( 'in' object_wrapped2 -> ^( FOR_IN_STMT object_wrapped2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:482:4: 'in' object_wrapped2
            {
            string_literal260=(Token)match(input,202,FOLLOW_202_in_for_stmt_int12441);  
            stream_202.add(string_literal260);


            pushFollow(FOLLOW_object_wrapped2_in_for_stmt_int12443);
            object_wrapped2261=object_wrapped2();

            state._fsp--;

            stream_object_wrapped2.add(object_wrapped2261.getTree());

            // AST REWRITE
            // elements: object_wrapped2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 482:26: -> ^( FOR_IN_STMT object_wrapped2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:482:29: ^( FOR_IN_STMT object_wrapped2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FOR_IN_STMT, "FOR_IN_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_object_wrapped2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt_int1"


    public static class for_stmt_int2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "for_stmt_int2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:484:1: for_stmt_int2 : SEMICOLON ( classical_expr_wrp )? SEMICOLON ( classical_expr_wrp )? ;
    public final ObjcmParser.for_stmt_int2_return for_stmt_int2() throws RecognitionException {
        ObjcmParser.for_stmt_int2_return retval = new ObjcmParser.for_stmt_int2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON262=null;
        Token SEMICOLON264=null;
        ObjcmParser.classical_expr_wrp_return classical_expr_wrp263 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp265 =null;


        Object SEMICOLON262_tree=null;
        Object SEMICOLON264_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:2: ( SEMICOLON ( classical_expr_wrp )? SEMICOLON ( classical_expr_wrp )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:4: SEMICOLON ( classical_expr_wrp )? SEMICOLON ( classical_expr_wrp )?
            {
            root_0 = (Object)adaptor.nil();


            SEMICOLON262=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_for_stmt_int22463); 
            SEMICOLON262_tree = 
            (Object)adaptor.create(SEMICOLON262)
            ;
            adaptor.addChild(root_0, SEMICOLON262_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:14: ( classical_expr_wrp )?
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==ASTERISK||LA58_0==ID||LA58_0==L_AND||LA58_0==L_BR||LA58_0==L_KBR||LA58_0==L_MINUS||LA58_0==L_MINUS_MINUS||LA58_0==L_NOT||LA58_0==L_PLUS||LA58_0==L_PLUS_PLUS||LA58_0==L_TILDA||LA58_0==NUMBER||LA58_0==SIZEOF||(LA58_0 >= STRING_LITERAL && LA58_0 <= STRING_LITERAL3)||LA58_0==175||LA58_0==182||LA58_0==184||LA58_0==188||LA58_0==191||LA58_0==194||LA58_0==202||(LA58_0 >= 204 && LA58_0 <= 205)||LA58_0==210) ) {
                alt58=1;
            }
            switch (alt58) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:14: classical_expr_wrp
                    {
                    pushFollow(FOLLOW_classical_expr_wrp_in_for_stmt_int22465);
                    classical_expr_wrp263=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp263.getTree());

                    }
                    break;

            }


            SEMICOLON264=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_for_stmt_int22468); 
            SEMICOLON264_tree = 
            (Object)adaptor.create(SEMICOLON264)
            ;
            adaptor.addChild(root_0, SEMICOLON264_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:44: ( classical_expr_wrp )?
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==ASTERISK||LA59_0==ID||LA59_0==L_AND||LA59_0==L_BR||LA59_0==L_KBR||LA59_0==L_MINUS||LA59_0==L_MINUS_MINUS||LA59_0==L_NOT||LA59_0==L_PLUS||LA59_0==L_PLUS_PLUS||LA59_0==L_TILDA||LA59_0==NUMBER||LA59_0==SIZEOF||(LA59_0 >= STRING_LITERAL && LA59_0 <= STRING_LITERAL3)||LA59_0==175||LA59_0==182||LA59_0==184||LA59_0==188||LA59_0==191||LA59_0==194||LA59_0==202||(LA59_0 >= 204 && LA59_0 <= 205)||LA59_0==210) ) {
                alt59=1;
            }
            switch (alt59) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:485:44: classical_expr_wrp
                    {
                    pushFollow(FOLLOW_classical_expr_wrp_in_for_stmt_int22470);
                    classical_expr_wrp265=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp265.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "for_stmt_int2"


    public static class return_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "return_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:488:1: return_stmt : 'return' ( expression )? SEMICOLON -> ^( RETURN_STMT ( expression )? SEMICOLON ) ;
    public final ObjcmParser.return_stmt_return return_stmt() throws RecognitionException {
        ObjcmParser.return_stmt_return retval = new ObjcmParser.return_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal266=null;
        Token SEMICOLON268=null;
        ObjcmParser.expression_return expression267 =null;


        Object string_literal266_tree=null;
        Object SEMICOLON268_tree=null;
        RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
        RewriteRuleTokenStream stream_206=new RewriteRuleTokenStream(adaptor,"token 206");
        RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:2: ( 'return' ( expression )? SEMICOLON -> ^( RETURN_STMT ( expression )? SEMICOLON ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:4: 'return' ( expression )? SEMICOLON
            {
            string_literal266=(Token)match(input,206,FOLLOW_206_in_return_stmt2483);  
            stream_206.add(string_literal266);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:13: ( expression )?
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==ASTERISK||LA60_0==ID||LA60_0==L_AND||LA60_0==L_BR||LA60_0==L_KBR||LA60_0==L_MINUS||LA60_0==L_MINUS_MINUS||LA60_0==L_NOT||LA60_0==L_PLUS||LA60_0==L_PLUS_PLUS||LA60_0==L_TILDA||LA60_0==NUMBER||LA60_0==SIZEOF||(LA60_0 >= STRING_LITERAL && LA60_0 <= STRING_LITERAL3)||LA60_0==175||LA60_0==182||LA60_0==184||LA60_0==188||LA60_0==191||LA60_0==194||LA60_0==202||(LA60_0 >= 204 && LA60_0 <= 205)||LA60_0==210) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:13: expression
                    {
                    pushFollow(FOLLOW_expression_in_return_stmt2485);
                    expression267=expression();

                    state._fsp--;

                    stream_expression.add(expression267.getTree());

                    }
                    break;

            }


            SEMICOLON268=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_return_stmt2488);  
            stream_SEMICOLON.add(SEMICOLON268);


            // AST REWRITE
            // elements: SEMICOLON, expression
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 489:35: -> ^( RETURN_STMT ( expression )? SEMICOLON )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:38: ^( RETURN_STMT ( expression )? SEMICOLON )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(RETURN_STMT, "RETURN_STMT")
                , root_1);

                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:489:52: ( expression )?
                if ( stream_expression.hasNext() ) {
                    adaptor.addChild(root_1, stream_expression.nextTree());

                }
                stream_expression.reset();

                adaptor.addChild(root_1, 
                stream_SEMICOLON.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "return_stmt"


    public static class if_stmt_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "if_stmt_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:491:1: if_stmt_wrapper : if_stmt -> ^( IF_STMT if_stmt ) ;
    public final ObjcmParser.if_stmt_wrapper_return if_stmt_wrapper() throws RecognitionException {
        ObjcmParser.if_stmt_wrapper_return retval = new ObjcmParser.if_stmt_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.if_stmt_return if_stmt269 =null;


        RewriteRuleSubtreeStream stream_if_stmt=new RewriteRuleSubtreeStream(adaptor,"rule if_stmt");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:492:2: ( if_stmt -> ^( IF_STMT if_stmt ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:492:4: if_stmt
            {
            pushFollow(FOLLOW_if_stmt_in_if_stmt_wrapper2509);
            if_stmt269=if_stmt();

            state._fsp--;

            stream_if_stmt.add(if_stmt269.getTree());

            // AST REWRITE
            // elements: if_stmt
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 492:12: -> ^( IF_STMT if_stmt )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:492:15: ^( IF_STMT if_stmt )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(IF_STMT, "IF_STMT")
                , root_1);

                adaptor.addChild(root_1, stream_if_stmt.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "if_stmt_wrapper"


    public static class if_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "if_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:494:1: if_stmt : 'if' L_BR if_expr R_BR if_stmt_block_wrapper ;
    public final ObjcmParser.if_stmt_return if_stmt() throws RecognitionException {
        ObjcmParser.if_stmt_return retval = new ObjcmParser.if_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal270=null;
        Token L_BR271=null;
        Token R_BR273=null;
        ObjcmParser.if_expr_return if_expr272 =null;

        ObjcmParser.if_stmt_block_wrapper_return if_stmt_block_wrapper274 =null;


        Object string_literal270_tree=null;
        Object L_BR271_tree=null;
        Object R_BR273_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:494:9: ( 'if' L_BR if_expr R_BR if_stmt_block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:494:11: 'if' L_BR if_expr R_BR if_stmt_block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            string_literal270=(Token)match(input,201,FOLLOW_201_in_if_stmt2525); 
            string_literal270_tree = 
            (Object)adaptor.create(string_literal270)
            ;
            adaptor.addChild(root_0, string_literal270_tree);


            L_BR271=(Token)match(input,L_BR,FOLLOW_L_BR_in_if_stmt2528); 
            L_BR271_tree = 
            (Object)adaptor.create(L_BR271)
            ;
            adaptor.addChild(root_0, L_BR271_tree);


            pushFollow(FOLLOW_if_expr_in_if_stmt2531);
            if_expr272=if_expr();

            state._fsp--;

            adaptor.addChild(root_0, if_expr272.getTree());

            R_BR273=(Token)match(input,R_BR,FOLLOW_R_BR_in_if_stmt2533); 
            R_BR273_tree = 
            (Object)adaptor.create(R_BR273)
            ;
            adaptor.addChild(root_0, R_BR273_tree);


            pushFollow(FOLLOW_if_stmt_block_wrapper_in_if_stmt2536);
            if_stmt_block_wrapper274=if_stmt_block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, if_stmt_block_wrapper274.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "if_stmt"


    public static class if_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "if_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:497:1: if_expr : classical_expr_wrp -> ^( IF_EXPR classical_expr_wrp ) ;
    public final ObjcmParser.if_expr_return if_expr() throws RecognitionException {
        ObjcmParser.if_expr_return retval = new ObjcmParser.if_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp275 =null;


        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:497:9: ( classical_expr_wrp -> ^( IF_EXPR classical_expr_wrp ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:497:12: classical_expr_wrp
            {
            pushFollow(FOLLOW_classical_expr_wrp_in_if_expr2549);
            classical_expr_wrp275=classical_expr_wrp();

            state._fsp--;

            stream_classical_expr_wrp.add(classical_expr_wrp275.getTree());

            // AST REWRITE
            // elements: classical_expr_wrp
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 497:31: -> ^( IF_EXPR classical_expr_wrp )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:497:34: ^( IF_EXPR classical_expr_wrp )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(IF_EXPR, "IF_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "if_expr"


    public static class else_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "else_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:499:1: else_stmt : 'else' if_stmt_block ;
    public final ObjcmParser.else_stmt_return else_stmt() throws RecognitionException {
        ObjcmParser.else_stmt_return retval = new ObjcmParser.else_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal276=null;
        ObjcmParser.if_stmt_block_return if_stmt_block277 =null;


        Object string_literal276_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:500:2: ( 'else' if_stmt_block )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:500:4: 'else' if_stmt_block
            {
            root_0 = (Object)adaptor.nil();


            string_literal276=(Token)match(input,197,FOLLOW_197_in_else_stmt2568); 
            string_literal276_tree = 
            (Object)adaptor.create(string_literal276)
            ;
            adaptor.addChild(root_0, string_literal276_tree);


            pushFollow(FOLLOW_if_stmt_block_in_else_stmt2571);
            if_stmt_block277=if_stmt_block();

            state._fsp--;

            adaptor.addChild(root_0, if_stmt_block277.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "else_stmt"


    public static class if_stmt_block_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "if_stmt_block_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:502:1: if_stmt_block_wrapper : if_stmt_block -> ^( IF_BLOCK if_stmt_block ) ;
    public final ObjcmParser.if_stmt_block_wrapper_return if_stmt_block_wrapper() throws RecognitionException {
        ObjcmParser.if_stmt_block_wrapper_return retval = new ObjcmParser.if_stmt_block_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.if_stmt_block_return if_stmt_block278 =null;


        RewriteRuleSubtreeStream stream_if_stmt_block=new RewriteRuleSubtreeStream(adaptor,"rule if_stmt_block");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:503:2: ( if_stmt_block -> ^( IF_BLOCK if_stmt_block ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:503:4: if_stmt_block
            {
            pushFollow(FOLLOW_if_stmt_block_in_if_stmt_block_wrapper2580);
            if_stmt_block278=if_stmt_block();

            state._fsp--;

            stream_if_stmt_block.add(if_stmt_block278.getTree());

            // AST REWRITE
            // elements: if_stmt_block
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 503:18: -> ^( IF_BLOCK if_stmt_block )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:503:21: ^( IF_BLOCK if_stmt_block )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(IF_BLOCK, "IF_BLOCK")
                , root_1);

                adaptor.addChild(root_1, stream_if_stmt_block.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "if_stmt_block_wrapper"


    public static class if_stmt_block_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "if_stmt_block"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:505:1: if_stmt_block : ( block_wrapper | block_internal );
    public final ObjcmParser.if_stmt_block_return if_stmt_block() throws RecognitionException {
        ObjcmParser.if_stmt_block_return retval = new ObjcmParser.if_stmt_block_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_wrapper_return block_wrapper279 =null;

        ObjcmParser.block_internal_return block_internal280 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:506:2: ( block_wrapper | block_internal )
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==L_FBR) ) {
                alt61=1;
            }
            else if ( (LA61_0==ASTERISK||LA61_0==BREAK_WORD||LA61_0==CONST_PREFIX||LA61_0==ENUM_PREFIX||LA61_0==ID||LA61_0==L_AND||LA61_0==L_BR||LA61_0==L_KBR||LA61_0==L_MINUS||LA61_0==L_MINUS_MINUS||LA61_0==L_NOT||LA61_0==L_PLUS||LA61_0==L_PLUS_PLUS||LA61_0==L_TILDA||LA61_0==NUMBER||LA61_0==SEMICOLON||(LA61_0 >= SINGLE_OP && LA61_0 <= SIZEOF)||LA61_0==STATIC_PREFIX||(LA61_0 >= STRING_LITERAL && LA61_0 <= STRING_LITERAL3)||LA61_0==STRUCT_PREFIX||LA61_0==VOID||LA61_0==175||LA61_0==182||LA61_0==184||(LA61_0 >= 186 && LA61_0 <= 188)||(LA61_0 >= 190 && LA61_0 <= 191)||LA61_0==194||(LA61_0 >= 196 && LA61_0 <= 202)||(LA61_0 >= 204 && LA61_0 <= 207)||(LA61_0 >= 210 && LA61_0 <= 211)) ) {
                alt61=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 61, 0, input);

                throw nvae;

            }
            switch (alt61) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:506:4: block_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_block_wrapper_in_if_stmt_block2597);
                    block_wrapper279=block_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, block_wrapper279.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:507:5: block_internal
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_block_internal_in_if_stmt_block2603);
                    block_internal280=block_internal();

                    state._fsp--;

                    adaptor.addChild(root_0, block_internal280.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "if_stmt_block"


    public static class static_start_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_start_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:510:1: static_start_wrapper : static_start -> ^( STATIC_START static_start ) ;
    public final ObjcmParser.static_start_wrapper_return static_start_wrapper() throws RecognitionException {
        ObjcmParser.static_start_wrapper_return retval = new ObjcmParser.static_start_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.static_start_return static_start281 =null;


        RewriteRuleSubtreeStream stream_static_start=new RewriteRuleSubtreeStream(adaptor,"rule static_start");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:511:2: ( static_start -> ^( STATIC_START static_start ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:511:4: static_start
            {
            pushFollow(FOLLOW_static_start_in_static_start_wrapper2615);
            static_start281=static_start();

            state._fsp--;

            stream_static_start.add(static_start281.getTree());

            // AST REWRITE
            // elements: static_start
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 511:17: -> ^( STATIC_START static_start )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:511:20: ^( STATIC_START static_start )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STATIC_START, "STATIC_START")
                , root_1);

                adaptor.addChild(root_1, stream_static_start.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_start_wrapper"


    public static class static_start_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_start"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:513:1: static_start : STATIC_PREFIX ( CONST_PREFIX )? ( static_type_wrapper )? full_expr2 ;
    public final ObjcmParser.static_start_return static_start() throws RecognitionException {
        ObjcmParser.static_start_return retval = new ObjcmParser.static_start_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STATIC_PREFIX282=null;
        Token CONST_PREFIX283=null;
        ObjcmParser.static_type_wrapper_return static_type_wrapper284 =null;

        ObjcmParser.full_expr2_return full_expr2285 =null;


        Object STATIC_PREFIX282_tree=null;
        Object CONST_PREFIX283_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:2: ( STATIC_PREFIX ( CONST_PREFIX )? ( static_type_wrapper )? full_expr2 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:4: STATIC_PREFIX ( CONST_PREFIX )? ( static_type_wrapper )? full_expr2
            {
            root_0 = (Object)adaptor.nil();


            STATIC_PREFIX282=(Token)match(input,STATIC_PREFIX,FOLLOW_STATIC_PREFIX_in_static_start2633); 
            STATIC_PREFIX282_tree = 
            (Object)adaptor.create(STATIC_PREFIX282)
            ;
            adaptor.addChild(root_0, STATIC_PREFIX282_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:18: ( CONST_PREFIX )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==CONST_PREFIX) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:18: CONST_PREFIX
                    {
                    CONST_PREFIX283=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_static_start2635); 
                    CONST_PREFIX283_tree = 
                    (Object)adaptor.create(CONST_PREFIX283)
                    ;
                    adaptor.addChild(root_0, CONST_PREFIX283_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:32: ( static_type_wrapper )?
            int alt63=2;
            alt63 = dfa63.predict(input);
            switch (alt63) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:514:32: static_type_wrapper
                    {
                    pushFollow(FOLLOW_static_type_wrapper_in_static_start2638);
                    static_type_wrapper284=static_type_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, static_type_wrapper284.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_full_expr2_in_static_start2641);
            full_expr2285=full_expr2();

            state._fsp--;

            adaptor.addChild(root_0, full_expr2285.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_start"


    public static class static_type_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_type_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:517:1: static_type_wrapper : static_type -> ^( STATIC_TYPE static_type ) ;
    public final ObjcmParser.static_type_wrapper_return static_type_wrapper() throws RecognitionException {
        ObjcmParser.static_type_wrapper_return retval = new ObjcmParser.static_type_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.static_type_return static_type286 =null;


        RewriteRuleSubtreeStream stream_static_type=new RewriteRuleSubtreeStream(adaptor,"rule static_type");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:518:2: ( static_type -> ^( STATIC_TYPE static_type ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:518:4: static_type
            {
            pushFollow(FOLLOW_static_type_in_static_type_wrapper2653);
            static_type286=static_type();

            state._fsp--;

            stream_static_type.add(static_type286.getTree());

            // AST REWRITE
            // elements: static_type
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 518:16: -> ^( STATIC_TYPE static_type )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:518:19: ^( STATIC_TYPE static_type )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STATIC_TYPE, "STATIC_TYPE")
                , root_1);

                adaptor.addChild(root_1, stream_static_type.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_type_wrapper"


    public static class static_type_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "static_type"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:520:1: static_type : object_name ( ASTERISK )* ;
    public final ObjcmParser.static_type_return static_type() throws RecognitionException {
        ObjcmParser.static_type_return retval = new ObjcmParser.static_type_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ASTERISK288=null;
        ObjcmParser.object_name_return object_name287 =null;


        Object ASTERISK288_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:521:2: ( object_name ( ASTERISK )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:521:4: object_name ( ASTERISK )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_object_name_in_static_type2672);
            object_name287=object_name();

            state._fsp--;

            adaptor.addChild(root_0, object_name287.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:521:16: ( ASTERISK )*
            loop64:
            do {
                int alt64=2;
                int LA64_0 = input.LA(1);

                if ( (LA64_0==ASTERISK) ) {
                    alt64=1;
                }


                switch (alt64) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:521:16: ASTERISK
            	    {
            	    ASTERISK288=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_static_type2674); 
            	    ASTERISK288_tree = 
            	    (Object)adaptor.create(ASTERISK288)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK288_tree);


            	    }
            	    break;

            	default :
            	    break loop64;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "static_type"


    public static class id_part_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "id_part_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:523:1: id_part_end : ( id_part_end_internal )+ ;
    public final ObjcmParser.id_part_end_return id_part_end() throws RecognitionException {
        ObjcmParser.id_part_end_return retval = new ObjcmParser.id_part_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.id_part_end_internal_return id_part_end_internal289 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:524:2: ( ( id_part_end_internal )+ )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:524:4: ( id_part_end_internal )+
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:524:4: ( id_part_end_internal )+
            int cnt65=0;
            loop65:
            do {
                int alt65=2;
                int LA65_0 = input.LA(1);

                if ( (LA65_0==DOT||LA65_0==172) ) {
                    alt65=1;
                }


                switch (alt65) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:524:4: id_part_end_internal
            	    {
            	    pushFollow(FOLLOW_id_part_end_internal_in_id_part_end2686);
            	    id_part_end_internal289=id_part_end_internal();

            	    state._fsp--;

            	    adaptor.addChild(root_0, id_part_end_internal289.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt65 >= 1 ) break loop65;
                        EarlyExitException eee =
                            new EarlyExitException(65, input);
                        throw eee;
                }
                cnt65++;
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "id_part_end"


    public static class id_part_end_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "id_part_end_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:527:1: id_part_end_internal : ( DOT | '->' ) id_part -> ^( FIELD_ACCESS id_part ) ;
    public final ObjcmParser.id_part_end_internal_return id_part_end_internal() throws RecognitionException {
        ObjcmParser.id_part_end_internal_return retval = new ObjcmParser.id_part_end_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token DOT290=null;
        Token string_literal291=null;
        ObjcmParser.id_part_return id_part292 =null;


        Object DOT290_tree=null;
        Object string_literal291_tree=null;
        RewriteRuleTokenStream stream_172=new RewriteRuleTokenStream(adaptor,"token 172");
        RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
        RewriteRuleSubtreeStream stream_id_part=new RewriteRuleSubtreeStream(adaptor,"rule id_part");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:2: ( ( DOT | '->' ) id_part -> ^( FIELD_ACCESS id_part ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:4: ( DOT | '->' ) id_part
            {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:4: ( DOT | '->' )
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==DOT) ) {
                alt66=1;
            }
            else if ( (LA66_0==172) ) {
                alt66=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 66, 0, input);

                throw nvae;

            }
            switch (alt66) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:5: DOT
                    {
                    DOT290=(Token)match(input,DOT,FOLLOW_DOT_in_id_part_end_internal2701);  
                    stream_DOT.add(DOT290);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:11: '->'
                    {
                    string_literal291=(Token)match(input,172,FOLLOW_172_in_id_part_end_internal2705);  
                    stream_172.add(string_literal291);


                    }
                    break;

            }


            pushFollow(FOLLOW_id_part_in_id_part_end_internal2708);
            id_part292=id_part();

            state._fsp--;

            stream_id_part.add(id_part292.getTree());

            // AST REWRITE
            // elements: id_part
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 528:25: -> ^( FIELD_ACCESS id_part )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:528:28: ^( FIELD_ACCESS id_part )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD_ACCESS, "FIELD_ACCESS")
                , root_1);

                adaptor.addChild(root_1, stream_id_part.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "id_part_end_internal"


    public static class known_types_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "known_types"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:531:1: known_types : ( 'unsigned' | VOID );
    public final ObjcmParser.known_types_return known_types() throws RecognitionException {
        ObjcmParser.known_types_return retval = new ObjcmParser.known_types_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set293=null;

        Object set293_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:532:2: ( 'unsigned' | VOID )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set293=(Token)input.LT(1);

            if ( input.LA(1)==VOID||input.LA(1)==210 ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set293)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "known_types"


    public static class id_part_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "id_part"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:1: id_part : name_internal ( function_brackets_wrapper )? ( index_wrapper )* ;
    public final ObjcmParser.id_part_return id_part() throws RecognitionException {
        ObjcmParser.id_part_return retval = new ObjcmParser.id_part_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.name_internal_return name_internal294 =null;

        ObjcmParser.function_brackets_wrapper_return function_brackets_wrapper295 =null;

        ObjcmParser.index_wrapper_return index_wrapper296 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:9: ( name_internal ( function_brackets_wrapper )? ( index_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:12: name_internal ( function_brackets_wrapper )? ( index_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_name_internal_in_id_part2746);
            name_internal294=name_internal();

            state._fsp--;

            adaptor.addChild(root_0, name_internal294.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:26: ( function_brackets_wrapper )?
            int alt67=2;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==L_BR) ) {
                alt67=1;
            }
            switch (alt67) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:26: function_brackets_wrapper
                    {
                    pushFollow(FOLLOW_function_brackets_wrapper_in_id_part2748);
                    function_brackets_wrapper295=function_brackets_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, function_brackets_wrapper295.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:53: ( index_wrapper )*
            loop68:
            do {
                int alt68=2;
                int LA68_0 = input.LA(1);

                if ( (LA68_0==L_KBR) ) {
                    alt68=1;
                }


                switch (alt68) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:536:53: index_wrapper
            	    {
            	    pushFollow(FOLLOW_index_wrapper_in_id_part2751);
            	    index_wrapper296=index_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, index_wrapper296.getTree());

            	    }
            	    break;

            	default :
            	    break loop68;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "id_part"


    public static class object_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "object_name"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:539:1: object_name : id_part ( id_part_end )? ;
    public final ObjcmParser.object_name_return object_name() throws RecognitionException {
        ObjcmParser.object_name_return retval = new ObjcmParser.object_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.id_part_return id_part297 =null;

        ObjcmParser.id_part_end_return id_part_end298 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:540:2: ( id_part ( id_part_end )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:540:4: id_part ( id_part_end )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_id_part_in_object_name2764);
            id_part297=id_part();

            state._fsp--;

            adaptor.addChild(root_0, id_part297.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:540:12: ( id_part_end )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==DOT||LA69_0==172) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:540:12: id_part_end
                    {
                    pushFollow(FOLLOW_id_part_end_in_object_name2766);
                    id_part_end298=id_part_end();

                    state._fsp--;

                    adaptor.addChild(root_0, id_part_end298.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "object_name"


    public static class method_call_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:543:1: method_call_wrapper : L_KBR method_call2 R_KBR -> ^( METHOD_CALL method_call2 ) ;
    public final ObjcmParser.method_call_wrapper_return method_call_wrapper() throws RecognitionException {
        ObjcmParser.method_call_wrapper_return retval = new ObjcmParser.method_call_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_KBR299=null;
        Token R_KBR301=null;
        ObjcmParser.method_call2_return method_call2300 =null;


        Object L_KBR299_tree=null;
        Object R_KBR301_tree=null;
        RewriteRuleTokenStream stream_R_KBR=new RewriteRuleTokenStream(adaptor,"token R_KBR");
        RewriteRuleTokenStream stream_L_KBR=new RewriteRuleTokenStream(adaptor,"token L_KBR");
        RewriteRuleSubtreeStream stream_method_call2=new RewriteRuleSubtreeStream(adaptor,"rule method_call2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:544:2: ( L_KBR method_call2 R_KBR -> ^( METHOD_CALL method_call2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:544:4: L_KBR method_call2 R_KBR
            {
            L_KBR299=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_method_call_wrapper2780);  
            stream_L_KBR.add(L_KBR299);


            pushFollow(FOLLOW_method_call2_in_method_call_wrapper2782);
            method_call2300=method_call2();

            state._fsp--;

            stream_method_call2.add(method_call2300.getTree());

            R_KBR301=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_method_call_wrapper2784);  
            stream_R_KBR.add(R_KBR301);


            // AST REWRITE
            // elements: method_call2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 544:29: -> ^( METHOD_CALL method_call2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:544:32: ^( METHOD_CALL method_call2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD_CALL, "METHOD_CALL")
                , root_1);

                adaptor.addChild(root_1, stream_method_call2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_wrapper"


    public static class method_call_wrapper2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_wrapper2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:547:1: method_call_wrapper2 : method_call2 -> ^( METHOD_CALL method_call2 ) ;
    public final ObjcmParser.method_call_wrapper2_return method_call_wrapper2() throws RecognitionException {
        ObjcmParser.method_call_wrapper2_return retval = new ObjcmParser.method_call_wrapper2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_call2_return method_call2302 =null;


        RewriteRuleSubtreeStream stream_method_call2=new RewriteRuleSubtreeStream(adaptor,"rule method_call2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:548:2: ( method_call2 -> ^( METHOD_CALL method_call2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:548:4: method_call2
            {
            pushFollow(FOLLOW_method_call2_in_method_call_wrapper22807);
            method_call2302=method_call2();

            state._fsp--;

            stream_method_call2.add(method_call2302.getTree());

            // AST REWRITE
            // elements: method_call2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 548:17: -> ^( METHOD_CALL method_call2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:548:20: ^( METHOD_CALL method_call2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD_CALL, "METHOD_CALL")
                , root_1);

                adaptor.addChild(root_1, stream_method_call2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_wrapper2"


    public static class method_call2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:550:1: method_call2 : object_wrapper method_name ( method_call_message_list_wrapper )? ;
    public final ObjcmParser.method_call2_return method_call2() throws RecognitionException {
        ObjcmParser.method_call2_return retval = new ObjcmParser.method_call2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.object_wrapper_return object_wrapper303 =null;

        ObjcmParser.method_name_return method_name304 =null;

        ObjcmParser.method_call_message_list_wrapper_return method_call_message_list_wrapper305 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:551:2: ( object_wrapper method_name ( method_call_message_list_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:551:4: object_wrapper method_name ( method_call_message_list_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_object_wrapper_in_method_call22826);
            object_wrapper303=object_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, object_wrapper303.getTree());

            pushFollow(FOLLOW_method_name_in_method_call22828);
            method_name304=method_name();

            state._fsp--;

            adaptor.addChild(root_0, method_name304.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:551:31: ( method_call_message_list_wrapper )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==COLON) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:551:33: method_call_message_list_wrapper
                    {
                    pushFollow(FOLLOW_method_call_message_list_wrapper_in_method_call22832);
                    method_call_message_list_wrapper305=method_call_message_list_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, method_call_message_list_wrapper305.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call2"


    public static class object_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "object_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:553:1: object_wrapper : object_wrapper_internal -> ^( OBJECT object_wrapper_internal ) ;
    public final ObjcmParser.object_wrapper_return object_wrapper() throws RecognitionException {
        ObjcmParser.object_wrapper_return retval = new ObjcmParser.object_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.object_wrapper_internal_return object_wrapper_internal306 =null;


        RewriteRuleSubtreeStream stream_object_wrapper_internal=new RewriteRuleSubtreeStream(adaptor,"rule object_wrapper_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:554:2: ( object_wrapper_internal -> ^( OBJECT object_wrapper_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:554:4: object_wrapper_internal
            {
            pushFollow(FOLLOW_object_wrapper_internal_in_object_wrapper2843);
            object_wrapper_internal306=object_wrapper_internal();

            state._fsp--;

            stream_object_wrapper_internal.add(object_wrapper_internal306.getTree());

            // AST REWRITE
            // elements: object_wrapper_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 554:28: -> ^( OBJECT object_wrapper_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:554:31: ^( OBJECT object_wrapper_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(OBJECT, "OBJECT")
                , root_1);

                adaptor.addChild(root_1, stream_object_wrapper_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "object_wrapper"


    public static class object_wrapper_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "object_wrapper_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:556:1: object_wrapper_internal : ( type_convertion ( object_name | method_call_wrapper ) | object_name | method_call_wrapper | STRING_LITERAL );
    public final ObjcmParser.object_wrapper_internal_return object_wrapper_internal() throws RecognitionException {
        ObjcmParser.object_wrapper_internal_return retval = new ObjcmParser.object_wrapper_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STRING_LITERAL312=null;
        ObjcmParser.type_convertion_return type_convertion307 =null;

        ObjcmParser.object_name_return object_name308 =null;

        ObjcmParser.method_call_wrapper_return method_call_wrapper309 =null;

        ObjcmParser.object_name_return object_name310 =null;

        ObjcmParser.method_call_wrapper_return method_call_wrapper311 =null;


        Object STRING_LITERAL312_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:558:2: ( type_convertion ( object_name | method_call_wrapper ) | object_name | method_call_wrapper | STRING_LITERAL )
            int alt72=4;
            switch ( input.LA(1) ) {
            case L_BR:
                {
                alt72=1;
                }
                break;
            case ID:
            case 191:
            case 194:
            case 202:
            case 205:
                {
                alt72=2;
                }
                break;
            case L_KBR:
                {
                alt72=3;
                }
                break;
            case STRING_LITERAL:
                {
                alt72=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 72, 0, input);

                throw nvae;

            }

            switch (alt72) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:558:4: type_convertion ( object_name | method_call_wrapper )
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_type_convertion_in_object_wrapper_internal2862);
                    type_convertion307=type_convertion();

                    state._fsp--;

                    adaptor.addChild(root_0, type_convertion307.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:558:20: ( object_name | method_call_wrapper )
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( (LA71_0==ID||LA71_0==191||LA71_0==194||LA71_0==202||LA71_0==205) ) {
                        alt71=1;
                    }
                    else if ( (LA71_0==L_KBR) ) {
                        alt71=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 71, 0, input);

                        throw nvae;

                    }
                    switch (alt71) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:558:21: object_name
                            {
                            pushFollow(FOLLOW_object_name_in_object_wrapper_internal2865);
                            object_name308=object_name();

                            state._fsp--;

                            adaptor.addChild(root_0, object_name308.getTree());

                            }
                            break;
                        case 2 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:558:35: method_call_wrapper
                            {
                            pushFollow(FOLLOW_method_call_wrapper_in_object_wrapper_internal2869);
                            method_call_wrapper309=method_call_wrapper();

                            state._fsp--;

                            adaptor.addChild(root_0, method_call_wrapper309.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:559:4: object_name
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_object_name_in_object_wrapper_internal2875);
                    object_name310=object_name();

                    state._fsp--;

                    adaptor.addChild(root_0, object_name310.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:560:4: method_call_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_method_call_wrapper_in_object_wrapper_internal2880);
                    method_call_wrapper311=method_call_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, method_call_wrapper311.getTree());

                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:561:4: STRING_LITERAL
                    {
                    root_0 = (Object)adaptor.nil();


                    STRING_LITERAL312=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_object_wrapper_internal2885); 
                    STRING_LITERAL312_tree = 
                    (Object)adaptor.create(STRING_LITERAL312)
                    ;
                    adaptor.addChild(root_0, STRING_LITERAL312_tree);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "object_wrapper_internal"


    public static class method_message3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_message3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:564:1: method_message3 : classical_expr_wrp -> ^( MESSAGE classical_expr_wrp ) ;
    public final ObjcmParser.method_message3_return method_message3() throws RecognitionException {
        ObjcmParser.method_message3_return retval = new ObjcmParser.method_message3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp313 =null;


        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:565:2: ( classical_expr_wrp -> ^( MESSAGE classical_expr_wrp ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:565:4: classical_expr_wrp
            {
            pushFollow(FOLLOW_classical_expr_wrp_in_method_message32897);
            classical_expr_wrp313=classical_expr_wrp();

            state._fsp--;

            stream_classical_expr_wrp.add(classical_expr_wrp313.getTree());

            // AST REWRITE
            // elements: classical_expr_wrp
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 565:23: -> ^( MESSAGE classical_expr_wrp )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:565:26: ^( MESSAGE classical_expr_wrp )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MESSAGE, "MESSAGE")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_message3"


    public static class type_convertion_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_convertion"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:567:1: type_convertion : L_BR type_convertion_internal_wrapper R_BR ;
    public final ObjcmParser.type_convertion_return type_convertion() throws RecognitionException {
        ObjcmParser.type_convertion_return retval = new ObjcmParser.type_convertion_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR314=null;
        Token R_BR316=null;
        ObjcmParser.type_convertion_internal_wrapper_return type_convertion_internal_wrapper315 =null;


        Object L_BR314_tree=null;
        Object R_BR316_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:568:2: ( L_BR type_convertion_internal_wrapper R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:568:4: L_BR type_convertion_internal_wrapper R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR314=(Token)match(input,L_BR,FOLLOW_L_BR_in_type_convertion2916); 
            L_BR314_tree = 
            (Object)adaptor.create(L_BR314)
            ;
            adaptor.addChild(root_0, L_BR314_tree);


            pushFollow(FOLLOW_type_convertion_internal_wrapper_in_type_convertion2918);
            type_convertion_internal_wrapper315=type_convertion_internal_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, type_convertion_internal_wrapper315.getTree());

            R_BR316=(Token)match(input,R_BR,FOLLOW_R_BR_in_type_convertion2920); 
            R_BR316_tree = 
            (Object)adaptor.create(R_BR316)
            ;
            adaptor.addChild(root_0, R_BR316_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_convertion"


    public static class type_convertion_internal_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_convertion_internal_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:570:1: type_convertion_internal_wrapper : ( CONST_PREFIX )? type_convertion_internal -> ^( TYPE_CONVERTION type_convertion_internal ) ;
    public final ObjcmParser.type_convertion_internal_wrapper_return type_convertion_internal_wrapper() throws RecognitionException {
        ObjcmParser.type_convertion_internal_wrapper_return retval = new ObjcmParser.type_convertion_internal_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token CONST_PREFIX317=null;
        ObjcmParser.type_convertion_internal_return type_convertion_internal318 =null;


        Object CONST_PREFIX317_tree=null;
        RewriteRuleTokenStream stream_CONST_PREFIX=new RewriteRuleTokenStream(adaptor,"token CONST_PREFIX");
        RewriteRuleSubtreeStream stream_type_convertion_internal=new RewriteRuleSubtreeStream(adaptor,"rule type_convertion_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:571:2: ( ( CONST_PREFIX )? type_convertion_internal -> ^( TYPE_CONVERTION type_convertion_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:571:4: ( CONST_PREFIX )? type_convertion_internal
            {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:571:4: ( CONST_PREFIX )?
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==CONST_PREFIX) ) {
                alt73=1;
            }
            switch (alt73) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:571:4: CONST_PREFIX
                    {
                    CONST_PREFIX317=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_type_convertion_internal_wrapper2929);  
                    stream_CONST_PREFIX.add(CONST_PREFIX317);


                    }
                    break;

            }


            pushFollow(FOLLOW_type_convertion_internal_in_type_convertion_internal_wrapper2932);
            type_convertion_internal318=type_convertion_internal();

            state._fsp--;

            stream_type_convertion_internal.add(type_convertion_internal318.getTree());

            // AST REWRITE
            // elements: type_convertion_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 571:43: -> ^( TYPE_CONVERTION type_convertion_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:571:46: ^( TYPE_CONVERTION type_convertion_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPE_CONVERTION, "TYPE_CONVERTION")
                , root_1);

                adaptor.addChild(root_1, stream_type_convertion_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_convertion_internal_wrapper"


    public static class type_convertion_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_convertion_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:573:1: type_convertion_internal : ( 'unsigned' )? type_internal ( generic )? ( ASTERISK )* ;
    public final ObjcmParser.type_convertion_internal_return type_convertion_internal() throws RecognitionException {
        ObjcmParser.type_convertion_internal_return retval = new ObjcmParser.type_convertion_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal319=null;
        Token ASTERISK322=null;
        ObjcmParser.type_internal_return type_internal320 =null;

        ObjcmParser.generic_return generic321 =null;


        Object string_literal319_tree=null;
        Object ASTERISK322_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:2: ( ( 'unsigned' )? type_internal ( generic )? ( ASTERISK )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:4: ( 'unsigned' )? type_internal ( generic )? ( ASTERISK )*
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:4: ( 'unsigned' )?
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==210) ) {
                int LA74_1 = input.LA(2);

                if ( (LA74_1==ID||LA74_1==VOID||LA74_1==210) ) {
                    alt74=1;
                }
            }
            switch (alt74) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:4: 'unsigned'
                    {
                    string_literal319=(Token)match(input,210,FOLLOW_210_in_type_convertion_internal2950); 
                    string_literal319_tree = 
                    (Object)adaptor.create(string_literal319)
                    ;
                    adaptor.addChild(root_0, string_literal319_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_type_internal_in_type_convertion_internal2953);
            type_internal320=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal320.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:30: ( generic )?
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==L_LESS) ) {
                alt75=1;
            }
            switch (alt75) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:30: generic
                    {
                    pushFollow(FOLLOW_generic_in_type_convertion_internal2955);
                    generic321=generic();

                    state._fsp--;

                    adaptor.addChild(root_0, generic321.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:39: ( ASTERISK )*
            loop76:
            do {
                int alt76=2;
                int LA76_0 = input.LA(1);

                if ( (LA76_0==ASTERISK) ) {
                    alt76=1;
                }


                switch (alt76) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:574:39: ASTERISK
            	    {
            	    ASTERISK322=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_type_convertion_internal2958); 
            	    ASTERISK322_tree = 
            	    (Object)adaptor.create(ASTERISK322)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK322_tree);


            	    }
            	    break;

            	default :
            	    break loop76;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_convertion_internal"


    public static class method_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_name"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:576:1: method_name : ( ID -> ^( METHOD_NAME ID ) | property -> ^( METHOD_NAME property ) );
    public final ObjcmParser.method_name_return method_name() throws RecognitionException {
        ObjcmParser.method_name_return retval = new ObjcmParser.method_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID323=null;
        ObjcmParser.property_return property324 =null;


        Object ID323_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleSubtreeStream stream_property=new RewriteRuleSubtreeStream(adaptor,"rule property");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:577:2: ( ID -> ^( METHOD_NAME ID ) | property -> ^( METHOD_NAME property ) )
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==ID) ) {
                alt77=1;
            }
            else if ( (LA77_0==191||LA77_0==194||LA77_0==205) ) {
                alt77=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 77, 0, input);

                throw nvae;

            }
            switch (alt77) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:577:4: ID
                    {
                    ID323=(Token)match(input,ID,FOLLOW_ID_in_method_name2969);  
                    stream_ID.add(ID323);


                    // AST REWRITE
                    // elements: ID
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 577:7: -> ^( METHOD_NAME ID )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:577:10: ^( METHOD_NAME ID )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(METHOD_NAME, "METHOD_NAME")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_ID.nextNode()
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:578:4: property
                    {
                    pushFollow(FOLLOW_property_in_method_name2982);
                    property324=property();

                    state._fsp--;

                    stream_property.add(property324.getTree());

                    // AST REWRITE
                    // elements: property
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 578:13: -> ^( METHOD_NAME property )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:578:16: ^( METHOD_NAME property )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(METHOD_NAME, "METHOD_NAME")
                        , root_1);

                        adaptor.addChild(root_1, stream_property.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_name"


    public static class method_call_message_list_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message_list_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:580:1: method_call_message_list_wrapper : method_call_message_list -> ^( MSG_LIST method_call_message_list ) ;
    public final ObjcmParser.method_call_message_list_wrapper_return method_call_message_list_wrapper() throws RecognitionException {
        ObjcmParser.method_call_message_list_wrapper_return retval = new ObjcmParser.method_call_message_list_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_call_message_list_return method_call_message_list325 =null;


        RewriteRuleSubtreeStream stream_method_call_message_list=new RewriteRuleSubtreeStream(adaptor,"rule method_call_message_list");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:581:2: ( method_call_message_list -> ^( MSG_LIST method_call_message_list ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:581:4: method_call_message_list
            {
            pushFollow(FOLLOW_method_call_message_list_in_method_call_message_list_wrapper2999);
            method_call_message_list325=method_call_message_list();

            state._fsp--;

            stream_method_call_message_list.add(method_call_message_list325.getTree());

            // AST REWRITE
            // elements: method_call_message_list
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 581:29: -> ^( MSG_LIST method_call_message_list )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:581:32: ^( MSG_LIST method_call_message_list )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MSG_LIST, "MSG_LIST")
                , root_1);

                adaptor.addChild(root_1, stream_method_call_message_list.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message_list_wrapper"


    public static class method_call_message_list_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message_list"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:583:1: method_call_message_list : method_call_message_first_wrapper ( method_call_message_wrapper )* ;
    public final ObjcmParser.method_call_message_list_return method_call_message_list() throws RecognitionException {
        ObjcmParser.method_call_message_list_return retval = new ObjcmParser.method_call_message_list_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_call_message_first_wrapper_return method_call_message_first_wrapper326 =null;

        ObjcmParser.method_call_message_wrapper_return method_call_message_wrapper327 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:584:2: ( method_call_message_first_wrapper ( method_call_message_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:584:4: method_call_message_first_wrapper ( method_call_message_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_call_message_first_wrapper_in_method_call_message_list3016);
            method_call_message_first_wrapper326=method_call_message_first_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, method_call_message_first_wrapper326.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:584:38: ( method_call_message_wrapper )*
            loop78:
            do {
                int alt78=2;
                int LA78_0 = input.LA(1);

                if ( (LA78_0==COLON||LA78_0==ID) ) {
                    alt78=1;
                }


                switch (alt78) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:584:38: method_call_message_wrapper
            	    {
            	    pushFollow(FOLLOW_method_call_message_wrapper_in_method_call_message_list3018);
            	    method_call_message_wrapper327=method_call_message_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, method_call_message_wrapper327.getTree());

            	    }
            	    break;

            	default :
            	    break loop78;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message_list"


    public static class method_call_message_first_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message_first_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:586:1: method_call_message_first_wrapper : method_call_message_first -> ^( METHOD_MSG method_call_message_first ) ;
    public final ObjcmParser.method_call_message_first_wrapper_return method_call_message_first_wrapper() throws RecognitionException {
        ObjcmParser.method_call_message_first_wrapper_return retval = new ObjcmParser.method_call_message_first_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_call_message_first_return method_call_message_first328 =null;


        RewriteRuleSubtreeStream stream_method_call_message_first=new RewriteRuleSubtreeStream(adaptor,"rule method_call_message_first");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:587:2: ( method_call_message_first -> ^( METHOD_MSG method_call_message_first ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:587:4: method_call_message_first
            {
            pushFollow(FOLLOW_method_call_message_first_in_method_call_message_first_wrapper3029);
            method_call_message_first328=method_call_message_first();

            state._fsp--;

            stream_method_call_message_first.add(method_call_message_first328.getTree());

            // AST REWRITE
            // elements: method_call_message_first
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 587:30: -> ^( METHOD_MSG method_call_message_first )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:587:33: ^( METHOD_MSG method_call_message_first )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD_MSG, "METHOD_MSG")
                , root_1);

                adaptor.addChild(root_1, stream_method_call_message_first.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message_first_wrapper"


    public static class method_call_message_first_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message_first"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:589:1: method_call_message_first : COLON message_wrapper ;
    public final ObjcmParser.method_call_message_first_return method_call_message_first() throws RecognitionException {
        ObjcmParser.method_call_message_first_return retval = new ObjcmParser.method_call_message_first_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON329=null;
        ObjcmParser.message_wrapper_return message_wrapper330 =null;


        Object COLON329_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:590:2: ( COLON message_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:590:4: COLON message_wrapper
            {
            root_0 = (Object)adaptor.nil();


            COLON329=(Token)match(input,COLON,FOLLOW_COLON_in_method_call_message_first3046); 
            COLON329_tree = 
            (Object)adaptor.create(COLON329)
            ;
            adaptor.addChild(root_0, COLON329_tree);


            pushFollow(FOLLOW_message_wrapper_in_method_call_message_first3049);
            message_wrapper330=message_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, message_wrapper330.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message_first"


    public static class method_call_message_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:592:1: method_call_message_wrapper : method_call_message -> ^( METHOD_MSG method_call_message ) ;
    public final ObjcmParser.method_call_message_wrapper_return method_call_message_wrapper() throws RecognitionException {
        ObjcmParser.method_call_message_wrapper_return retval = new ObjcmParser.method_call_message_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_call_message_return method_call_message331 =null;


        RewriteRuleSubtreeStream stream_method_call_message=new RewriteRuleSubtreeStream(adaptor,"rule method_call_message");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:593:2: ( method_call_message -> ^( METHOD_MSG method_call_message ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:593:4: method_call_message
            {
            pushFollow(FOLLOW_method_call_message_in_method_call_message_wrapper3059);
            method_call_message331=method_call_message();

            state._fsp--;

            stream_method_call_message.add(method_call_message331.getTree());

            // AST REWRITE
            // elements: method_call_message
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 593:24: -> ^( METHOD_MSG method_call_message )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:593:27: ^( METHOD_MSG method_call_message )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD_MSG, "METHOD_MSG")
                , root_1);

                adaptor.addChild(root_1, stream_method_call_message.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message_wrapper"


    public static class method_call_message_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_call_message"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:595:1: method_call_message : ( prefix | incomplete_prefix ) message_wrapper ;
    public final ObjcmParser.method_call_message_return method_call_message() throws RecognitionException {
        ObjcmParser.method_call_message_return retval = new ObjcmParser.method_call_message_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.prefix_return prefix332 =null;

        ObjcmParser.incomplete_prefix_return incomplete_prefix333 =null;

        ObjcmParser.message_wrapper_return message_wrapper334 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:596:2: ( ( prefix | incomplete_prefix ) message_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:596:4: ( prefix | incomplete_prefix ) message_wrapper
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:596:4: ( prefix | incomplete_prefix )
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==ID) ) {
                alt79=1;
            }
            else if ( (LA79_0==COLON) ) {
                alt79=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 79, 0, input);

                throw nvae;

            }
            switch (alt79) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:596:5: prefix
                    {
                    pushFollow(FOLLOW_prefix_in_method_call_message3078);
                    prefix332=prefix();

                    state._fsp--;

                    adaptor.addChild(root_0, prefix332.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:596:14: incomplete_prefix
                    {
                    pushFollow(FOLLOW_incomplete_prefix_in_method_call_message3082);
                    incomplete_prefix333=incomplete_prefix();

                    state._fsp--;

                    adaptor.addChild(root_0, incomplete_prefix333.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_message_wrapper_in_method_call_message3085);
            message_wrapper334=message_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, message_wrapper334.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_call_message"


    public static class message_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "message_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:598:1: message_wrapper : message -> ^( MESSAGE message ) ;
    public final ObjcmParser.message_wrapper_return message_wrapper() throws RecognitionException {
        ObjcmParser.message_wrapper_return retval = new ObjcmParser.message_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.message_return message335 =null;


        RewriteRuleSubtreeStream stream_message=new RewriteRuleSubtreeStream(adaptor,"rule message");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:599:2: ( message -> ^( MESSAGE message ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:599:4: message
            {
            pushFollow(FOLLOW_message_in_message_wrapper3095);
            message335=message();

            state._fsp--;

            stream_message.add(message335.getTree());

            // AST REWRITE
            // elements: message
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 599:12: -> ^( MESSAGE message )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:599:15: ^( MESSAGE message )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MESSAGE, "MESSAGE")
                , root_1);

                adaptor.addChild(root_1, stream_message.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "message_wrapper"


    public static class message_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "message"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:601:1: message : expression ( COMMA expression )* ;
    public final ObjcmParser.message_return message() throws RecognitionException {
        ObjcmParser.message_return retval = new ObjcmParser.message_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA337=null;
        ObjcmParser.expression_return expression336 =null;

        ObjcmParser.expression_return expression338 =null;


        Object COMMA337_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:601:9: ( expression ( COMMA expression )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:601:11: expression ( COMMA expression )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expression_in_message3113);
            expression336=expression();

            state._fsp--;

            adaptor.addChild(root_0, expression336.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:601:22: ( COMMA expression )*
            loop80:
            do {
                int alt80=2;
                int LA80_0 = input.LA(1);

                if ( (LA80_0==COMMA) ) {
                    alt80=1;
                }


                switch (alt80) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:601:23: COMMA expression
            	    {
            	    COMMA337=(Token)match(input,COMMA,FOLLOW_COMMA_in_message3116); 
            	    COMMA337_tree = 
            	    (Object)adaptor.create(COMMA337)
            	    ;
            	    adaptor.addChild(root_0, COMMA337_tree);


            	    pushFollow(FOLLOW_expression_in_message3118);
            	    expression338=expression();

            	    state._fsp--;

            	    adaptor.addChild(root_0, expression338.getTree());

            	    }
            	    break;

            	default :
            	    break loop80;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "message"


    public static class expression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expression"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:607:1: expression : ( classical_expr_wrp | struct_init_wrapper );
    public final ObjcmParser.expression_return expression() throws RecognitionException {
        ObjcmParser.expression_return retval = new ObjcmParser.expression_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp339 =null;

        ObjcmParser.struct_init_wrapper_return struct_init_wrapper340 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:608:2: ( classical_expr_wrp | struct_init_wrapper )
            int alt81=2;
            alt81 = dfa81.predict(input);
            switch (alt81) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:608:4: classical_expr_wrp
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_classical_expr_wrp_in_expression3134);
                    classical_expr_wrp339=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp339.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:609:4: struct_init_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_struct_init_wrapper_in_expression3139);
                    struct_init_wrapper340=struct_init_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, struct_init_wrapper340.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expression"


    public static class full_expr_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "full_expr_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:612:1: full_expr_wrapper : full_expr -> ^( EXPR_FULL full_expr ) ;
    public final ObjcmParser.full_expr_wrapper_return full_expr_wrapper() throws RecognitionException {
        ObjcmParser.full_expr_wrapper_return retval = new ObjcmParser.full_expr_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.full_expr_return full_expr341 =null;


        RewriteRuleSubtreeStream stream_full_expr=new RewriteRuleSubtreeStream(adaptor,"rule full_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:613:2: ( full_expr -> ^( EXPR_FULL full_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:613:4: full_expr
            {
            pushFollow(FOLLOW_full_expr_in_full_expr_wrapper3150);
            full_expr341=full_expr();

            state._fsp--;

            stream_full_expr.add(full_expr341.getTree());

            // AST REWRITE
            // elements: full_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 613:14: -> ^( EXPR_FULL full_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:613:17: ^( EXPR_FULL full_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_FULL, "EXPR_FULL")
                , root_1);

                adaptor.addChild(root_1, stream_full_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "full_expr_wrapper"


    public static class full_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "full_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:615:1: full_expr : classical_expr_wrp ( COMMA classical_expr_wrp )* ;
    public final ObjcmParser.full_expr_return full_expr() throws RecognitionException {
        ObjcmParser.full_expr_return retval = new ObjcmParser.full_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA343=null;
        ObjcmParser.classical_expr_wrp_return classical_expr_wrp342 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp344 =null;


        Object COMMA343_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:616:2: ( classical_expr_wrp ( COMMA classical_expr_wrp )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:616:4: classical_expr_wrp ( COMMA classical_expr_wrp )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_classical_expr_wrp_in_full_expr3167);
            classical_expr_wrp342=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp342.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:616:23: ( COMMA classical_expr_wrp )*
            loop82:
            do {
                int alt82=2;
                alt82 = dfa82.predict(input);
                switch (alt82) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:616:24: COMMA classical_expr_wrp
            	    {
            	    COMMA343=(Token)match(input,COMMA,FOLLOW_COMMA_in_full_expr3170); 
            	    COMMA343_tree = 
            	    (Object)adaptor.create(COMMA343)
            	    ;
            	    adaptor.addChild(root_0, COMMA343_tree);


            	    pushFollow(FOLLOW_classical_expr_wrp_in_full_expr3172);
            	    classical_expr_wrp344=classical_expr_wrp();

            	    state._fsp--;

            	    adaptor.addChild(root_0, classical_expr_wrp344.getTree());

            	    }
            	    break;

            	default :
            	    break loop82;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "full_expr"


    public static class full_expr2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "full_expr2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:618:1: full_expr2 : classical_expr_wrp2 ( COMMA classical_expr_wrp2 )* ;
    public final ObjcmParser.full_expr2_return full_expr2() throws RecognitionException {
        ObjcmParser.full_expr2_return retval = new ObjcmParser.full_expr2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA346=null;
        ObjcmParser.classical_expr_wrp2_return classical_expr_wrp2345 =null;

        ObjcmParser.classical_expr_wrp2_return classical_expr_wrp2347 =null;


        Object COMMA346_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:619:2: ( classical_expr_wrp2 ( COMMA classical_expr_wrp2 )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:619:4: classical_expr_wrp2 ( COMMA classical_expr_wrp2 )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_classical_expr_wrp2_in_full_expr23183);
            classical_expr_wrp2345=classical_expr_wrp2();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp2345.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:619:24: ( COMMA classical_expr_wrp2 )*
            loop83:
            do {
                int alt83=2;
                int LA83_0 = input.LA(1);

                if ( (LA83_0==COMMA) ) {
                    alt83=1;
                }


                switch (alt83) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:619:25: COMMA classical_expr_wrp2
            	    {
            	    COMMA346=(Token)match(input,COMMA,FOLLOW_COMMA_in_full_expr23186); 
            	    COMMA346_tree = 
            	    (Object)adaptor.create(COMMA346)
            	    ;
            	    adaptor.addChild(root_0, COMMA346_tree);


            	    pushFollow(FOLLOW_classical_expr_wrp2_in_full_expr23188);
            	    classical_expr_wrp2347=classical_expr_wrp2();

            	    state._fsp--;

            	    adaptor.addChild(root_0, classical_expr_wrp2347.getTree());

            	    }
            	    break;

            	default :
            	    break loop83;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "full_expr2"


    public static class expr_assign_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_assign_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:621:1: expr_assign_wrapper : expr_assign -> ^( EXPR_ASSIGN expr_assign ) ;
    public final ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper() throws RecognitionException {
        ObjcmParser.expr_assign_wrapper_return retval = new ObjcmParser.expr_assign_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_assign_return expr_assign348 =null;


        RewriteRuleSubtreeStream stream_expr_assign=new RewriteRuleSubtreeStream(adaptor,"rule expr_assign");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:622:2: ( expr_assign -> ^( EXPR_ASSIGN expr_assign ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:622:4: expr_assign
            {
            pushFollow(FOLLOW_expr_assign_in_expr_assign_wrapper3199);
            expr_assign348=expr_assign();

            state._fsp--;

            stream_expr_assign.add(expr_assign348.getTree());

            // AST REWRITE
            // elements: expr_assign
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 622:16: -> ^( EXPR_ASSIGN expr_assign )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:622:19: ^( EXPR_ASSIGN expr_assign )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_ASSIGN, "EXPR_ASSIGN")
                , root_1);

                adaptor.addChild(root_1, stream_expr_assign.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_assign_wrapper"


    public static class expr_assign_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_assign"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:624:1: expr_assign : assign_wrapper ( struct_init_wrapper | classical_expr_wrp | array_init_wrapper | ( func_pointer2 ( method_call_wrapper )? ) ) ;
    public final ObjcmParser.expr_assign_return expr_assign() throws RecognitionException {
        ObjcmParser.expr_assign_return retval = new ObjcmParser.expr_assign_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.assign_wrapper_return assign_wrapper349 =null;

        ObjcmParser.struct_init_wrapper_return struct_init_wrapper350 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp351 =null;

        ObjcmParser.array_init_wrapper_return array_init_wrapper352 =null;

        ObjcmParser.func_pointer2_return func_pointer2353 =null;

        ObjcmParser.method_call_wrapper_return method_call_wrapper354 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:2: ( assign_wrapper ( struct_init_wrapper | classical_expr_wrp | array_init_wrapper | ( func_pointer2 ( method_call_wrapper )? ) ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:4: assign_wrapper ( struct_init_wrapper | classical_expr_wrp | array_init_wrapper | ( func_pointer2 ( method_call_wrapper )? ) )
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_assign_wrapper_in_expr_assign3218);
            assign_wrapper349=assign_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, assign_wrapper349.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:19: ( struct_init_wrapper | classical_expr_wrp | array_init_wrapper | ( func_pointer2 ( method_call_wrapper )? ) )
            int alt85=4;
            alt85 = dfa85.predict(input);
            switch (alt85) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:20: struct_init_wrapper
                    {
                    pushFollow(FOLLOW_struct_init_wrapper_in_expr_assign3221);
                    struct_init_wrapper350=struct_init_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, struct_init_wrapper350.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:42: classical_expr_wrp
                    {
                    pushFollow(FOLLOW_classical_expr_wrp_in_expr_assign3225);
                    classical_expr_wrp351=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp351.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:63: array_init_wrapper
                    {
                    pushFollow(FOLLOW_array_init_wrapper_in_expr_assign3229);
                    array_init_wrapper352=array_init_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, array_init_wrapper352.getTree());

                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:84: ( func_pointer2 ( method_call_wrapper )? )
                    {
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:84: ( func_pointer2 ( method_call_wrapper )? )
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:85: func_pointer2 ( method_call_wrapper )?
                    {
                    pushFollow(FOLLOW_func_pointer2_in_expr_assign3234);
                    func_pointer2353=func_pointer2();

                    state._fsp--;

                    adaptor.addChild(root_0, func_pointer2353.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:99: ( method_call_wrapper )?
                    int alt84=2;
                    int LA84_0 = input.LA(1);

                    if ( (LA84_0==L_KBR) ) {
                        alt84=1;
                    }
                    switch (alt84) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:625:99: method_call_wrapper
                            {
                            pushFollow(FOLLOW_method_call_wrapper_in_expr_assign3236);
                            method_call_wrapper354=method_call_wrapper();

                            state._fsp--;

                            adaptor.addChild(root_0, method_call_wrapper354.getTree());

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_assign"


    public static class array_init_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "array_init_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:627:1: array_init_wrapper : array_init -> ^( ARRAY_INIT array_init ) ;
    public final ObjcmParser.array_init_wrapper_return array_init_wrapper() throws RecognitionException {
        ObjcmParser.array_init_wrapper_return retval = new ObjcmParser.array_init_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.array_init_return array_init355 =null;


        RewriteRuleSubtreeStream stream_array_init=new RewriteRuleSubtreeStream(adaptor,"rule array_init");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:628:2: ( array_init -> ^( ARRAY_INIT array_init ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:628:4: array_init
            {
            pushFollow(FOLLOW_array_init_in_array_init_wrapper3248);
            array_init355=array_init();

            state._fsp--;

            stream_array_init.add(array_init355.getTree());

            // AST REWRITE
            // elements: array_init
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 628:15: -> ^( ARRAY_INIT array_init )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:628:18: ^( ARRAY_INIT array_init )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ARRAY_INIT, "ARRAY_INIT")
                , root_1);

                adaptor.addChild(root_1, stream_array_init.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "array_init_wrapper"


    public static class array_init_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "array_init"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:630:1: array_init : L_FBR ( classical_expr_wrp3 ( COMMA classical_expr_wrp3 )* )? R_FBR ;
    public final ObjcmParser.array_init_return array_init() throws RecognitionException {
        ObjcmParser.array_init_return retval = new ObjcmParser.array_init_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR356=null;
        Token COMMA358=null;
        Token R_FBR360=null;
        ObjcmParser.classical_expr_wrp3_return classical_expr_wrp3357 =null;

        ObjcmParser.classical_expr_wrp3_return classical_expr_wrp3359 =null;


        Object L_FBR356_tree=null;
        Object COMMA358_tree=null;
        Object R_FBR360_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:2: ( L_FBR ( classical_expr_wrp3 ( COMMA classical_expr_wrp3 )* )? R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:4: L_FBR ( classical_expr_wrp3 ( COMMA classical_expr_wrp3 )* )? R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR356=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_array_init3267); 
            L_FBR356_tree = 
            (Object)adaptor.create(L_FBR356)
            ;
            adaptor.addChild(root_0, L_FBR356_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:10: ( classical_expr_wrp3 ( COMMA classical_expr_wrp3 )* )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==ASTERISK||LA87_0==ID||LA87_0==L_AND||LA87_0==L_BR||(LA87_0 >= L_FBR && LA87_0 <= L_KBR)||LA87_0==L_MINUS||LA87_0==L_MINUS_MINUS||LA87_0==L_NOT||LA87_0==L_PLUS||LA87_0==L_PLUS_PLUS||LA87_0==L_TILDA||LA87_0==NUMBER||LA87_0==SIZEOF||(LA87_0 >= STRING_LITERAL && LA87_0 <= STRING_LITERAL3)||LA87_0==175||LA87_0==182||LA87_0==184||LA87_0==188||LA87_0==191||LA87_0==194||LA87_0==202||(LA87_0 >= 204 && LA87_0 <= 205)||LA87_0==210) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:11: classical_expr_wrp3 ( COMMA classical_expr_wrp3 )*
                    {
                    pushFollow(FOLLOW_classical_expr_wrp3_in_array_init3270);
                    classical_expr_wrp3357=classical_expr_wrp3();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp3357.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:31: ( COMMA classical_expr_wrp3 )*
                    loop86:
                    do {
                        int alt86=2;
                        int LA86_0 = input.LA(1);

                        if ( (LA86_0==COMMA) ) {
                            alt86=1;
                        }


                        switch (alt86) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:631:32: COMMA classical_expr_wrp3
                    	    {
                    	    COMMA358=(Token)match(input,COMMA,FOLLOW_COMMA_in_array_init3273); 
                    	    COMMA358_tree = 
                    	    (Object)adaptor.create(COMMA358)
                    	    ;
                    	    adaptor.addChild(root_0, COMMA358_tree);


                    	    pushFollow(FOLLOW_classical_expr_wrp3_in_array_init3275);
                    	    classical_expr_wrp3359=classical_expr_wrp3();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, classical_expr_wrp3359.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop86;
                        }
                    } while (true);


                    }
                    break;

            }


            R_FBR360=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_array_init3281); 
            R_FBR360_tree = 
            (Object)adaptor.create(R_FBR360)
            ;
            adaptor.addChild(root_0, R_FBR360_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "array_init"


    public static class classical_expr_wrp3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classical_expr_wrp3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:634:1: classical_expr_wrp3 : ( array_init_wrapper | classical_expr_wrp );
    public final ObjcmParser.classical_expr_wrp3_return classical_expr_wrp3() throws RecognitionException {
        ObjcmParser.classical_expr_wrp3_return retval = new ObjcmParser.classical_expr_wrp3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.array_init_wrapper_return array_init_wrapper361 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp362 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:635:2: ( array_init_wrapper | classical_expr_wrp )
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==L_FBR) ) {
                alt88=1;
            }
            else if ( (LA88_0==ASTERISK||LA88_0==ID||LA88_0==L_AND||LA88_0==L_BR||LA88_0==L_KBR||LA88_0==L_MINUS||LA88_0==L_MINUS_MINUS||LA88_0==L_NOT||LA88_0==L_PLUS||LA88_0==L_PLUS_PLUS||LA88_0==L_TILDA||LA88_0==NUMBER||LA88_0==SIZEOF||(LA88_0 >= STRING_LITERAL && LA88_0 <= STRING_LITERAL3)||LA88_0==175||LA88_0==182||LA88_0==184||LA88_0==188||LA88_0==191||LA88_0==194||LA88_0==202||(LA88_0 >= 204 && LA88_0 <= 205)||LA88_0==210) ) {
                alt88=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 88, 0, input);

                throw nvae;

            }
            switch (alt88) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:635:4: array_init_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_array_init_wrapper_in_classical_expr_wrp33293);
                    array_init_wrapper361=array_init_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, array_init_wrapper361.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:636:4: classical_expr_wrp
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_classical_expr_wrp_in_classical_expr_wrp33299);
                    classical_expr_wrp362=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp362.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classical_expr_wrp3"


    public static class classical_expr_wrp_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classical_expr_wrp"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:639:1: classical_expr_wrp : classical_expr -> ^( CLASSICAL_EXPR classical_expr ) ;
    public final ObjcmParser.classical_expr_wrp_return classical_expr_wrp() throws RecognitionException {
        ObjcmParser.classical_expr_wrp_return retval = new ObjcmParser.classical_expr_wrp_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_return classical_expr363 =null;


        RewriteRuleSubtreeStream stream_classical_expr=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:640:2: ( classical_expr -> ^( CLASSICAL_EXPR classical_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:640:4: classical_expr
            {
            pushFollow(FOLLOW_classical_expr_in_classical_expr_wrp3312);
            classical_expr363=classical_expr();

            state._fsp--;

            stream_classical_expr.add(classical_expr363.getTree());

            // AST REWRITE
            // elements: classical_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 640:19: -> ^( CLASSICAL_EXPR classical_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:640:22: ^( CLASSICAL_EXPR classical_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CLASSICAL_EXPR, "CLASSICAL_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classical_expr_wrp"


    public static class classical_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classical_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:642:1: classical_expr : simple_expr_wrapper ( expr_question_wrapper | expr_assign_wrapper )? ;
    public final ObjcmParser.classical_expr_return classical_expr() throws RecognitionException {
        ObjcmParser.classical_expr_return retval = new ObjcmParser.classical_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper364 =null;

        ObjcmParser.expr_question_wrapper_return expr_question_wrapper365 =null;

        ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper366 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:643:2: ( simple_expr_wrapper ( expr_question_wrapper | expr_assign_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:643:4: simple_expr_wrapper ( expr_question_wrapper | expr_assign_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_simple_expr_wrapper_in_classical_expr3329);
            simple_expr_wrapper364=simple_expr_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, simple_expr_wrapper364.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:643:24: ( expr_question_wrapper | expr_assign_wrapper )?
            int alt89=3;
            int LA89_0 = input.LA(1);

            if ( (LA89_0==L_QUESTION) ) {
                alt89=1;
            }
            else if ( (LA89_0==L_AND_EQ||(LA89_0 >= L_DIV_EQ && LA89_0 <= L_EQ)||LA89_0==L_LEFT_EQ||LA89_0==L_MINUS_EQ||LA89_0==L_MULT_EQ||LA89_0==L_OR_EQ||LA89_0==L_PERC_EQ||LA89_0==L_PLUS_EQ||LA89_0==L_RIGHT_EQ||LA89_0==L_XOR_EQ) ) {
                alt89=2;
            }
            switch (alt89) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:643:25: expr_question_wrapper
                    {
                    pushFollow(FOLLOW_expr_question_wrapper_in_classical_expr3332);
                    expr_question_wrapper365=expr_question_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_question_wrapper365.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:643:49: expr_assign_wrapper
                    {
                    pushFollow(FOLLOW_expr_assign_wrapper_in_classical_expr3336);
                    expr_assign_wrapper366=expr_assign_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_assign_wrapper366.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classical_expr"


    public static class classical_expr_wrp2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classical_expr_wrp2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:645:1: classical_expr_wrp2 : classical_expr2 -> ^( CLASSICAL_EXPR_2 classical_expr2 ) ;
    public final ObjcmParser.classical_expr_wrp2_return classical_expr_wrp2() throws RecognitionException {
        ObjcmParser.classical_expr_wrp2_return retval = new ObjcmParser.classical_expr_wrp2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr2_return classical_expr2367 =null;


        RewriteRuleSubtreeStream stream_classical_expr2=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:646:2: ( classical_expr2 -> ^( CLASSICAL_EXPR_2 classical_expr2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:646:4: classical_expr2
            {
            pushFollow(FOLLOW_classical_expr2_in_classical_expr_wrp23348);
            classical_expr2367=classical_expr2();

            state._fsp--;

            stream_classical_expr2.add(classical_expr2367.getTree());

            // AST REWRITE
            // elements: classical_expr2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 646:20: -> ^( CLASSICAL_EXPR_2 classical_expr2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:646:23: ^( CLASSICAL_EXPR_2 classical_expr2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CLASSICAL_EXPR_2, "CLASSICAL_EXPR_2")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classical_expr_wrp2"


    public static class classical_expr2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "classical_expr2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:648:1: classical_expr2 : ( object_name | func_pointer1 ) ( expr_assign_wrapper )? ;
    public final ObjcmParser.classical_expr2_return classical_expr2() throws RecognitionException {
        ObjcmParser.classical_expr2_return retval = new ObjcmParser.classical_expr2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.object_name_return object_name368 =null;

        ObjcmParser.func_pointer1_return func_pointer1369 =null;

        ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper370 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:2: ( ( object_name | func_pointer1 ) ( expr_assign_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:4: ( object_name | func_pointer1 ) ( expr_assign_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:4: ( object_name | func_pointer1 )
            int alt90=2;
            alt90 = dfa90.predict(input);
            switch (alt90) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:5: object_name
                    {
                    pushFollow(FOLLOW_object_name_in_classical_expr23366);
                    object_name368=object_name();

                    state._fsp--;

                    adaptor.addChild(root_0, object_name368.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:19: func_pointer1
                    {
                    pushFollow(FOLLOW_func_pointer1_in_classical_expr23370);
                    func_pointer1369=func_pointer1();

                    state._fsp--;

                    adaptor.addChild(root_0, func_pointer1369.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:34: ( expr_assign_wrapper )?
            int alt91=2;
            int LA91_0 = input.LA(1);

            if ( (LA91_0==L_AND_EQ||(LA91_0 >= L_DIV_EQ && LA91_0 <= L_EQ)||LA91_0==L_LEFT_EQ||LA91_0==L_MINUS_EQ||LA91_0==L_MULT_EQ||LA91_0==L_OR_EQ||LA91_0==L_PERC_EQ||LA91_0==L_PLUS_EQ||LA91_0==L_RIGHT_EQ||LA91_0==L_XOR_EQ) ) {
                alt91=1;
            }
            switch (alt91) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:649:34: expr_assign_wrapper
                    {
                    pushFollow(FOLLOW_expr_assign_wrapper_in_classical_expr23373);
                    expr_assign_wrapper370=expr_assign_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_assign_wrapper370.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "classical_expr2"


    public static class expr_question_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_question_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:651:1: expr_question_wrapper : expr_question -> ^( EXPR_QUESTION expr_question ) ;
    public final ObjcmParser.expr_question_wrapper_return expr_question_wrapper() throws RecognitionException {
        ObjcmParser.expr_question_wrapper_return retval = new ObjcmParser.expr_question_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_question_return expr_question371 =null;


        RewriteRuleSubtreeStream stream_expr_question=new RewriteRuleSubtreeStream(adaptor,"rule expr_question");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:652:2: ( expr_question -> ^( EXPR_QUESTION expr_question ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:652:4: expr_question
            {
            pushFollow(FOLLOW_expr_question_in_expr_question_wrapper3383);
            expr_question371=expr_question();

            state._fsp--;

            stream_expr_question.add(expr_question371.getTree());

            // AST REWRITE
            // elements: expr_question
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 652:18: -> ^( EXPR_QUESTION expr_question )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:652:21: ^( EXPR_QUESTION expr_question )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_QUESTION, "EXPR_QUESTION")
                , root_1);

                adaptor.addChild(root_1, stream_expr_question.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_question_wrapper"


    public static class expr_question_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_question"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:654:1: expr_question : L_QUESTION classical_expr_wrp COLON classical_expr_wrp ;
    public final ObjcmParser.expr_question_return expr_question() throws RecognitionException {
        ObjcmParser.expr_question_return retval = new ObjcmParser.expr_question_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_QUESTION372=null;
        Token COLON374=null;
        ObjcmParser.classical_expr_wrp_return classical_expr_wrp373 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp375 =null;


        Object L_QUESTION372_tree=null;
        Object COLON374_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:655:2: ( L_QUESTION classical_expr_wrp COLON classical_expr_wrp )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:655:4: L_QUESTION classical_expr_wrp COLON classical_expr_wrp
            {
            root_0 = (Object)adaptor.nil();


            L_QUESTION372=(Token)match(input,L_QUESTION,FOLLOW_L_QUESTION_in_expr_question3400); 
            L_QUESTION372_tree = 
            (Object)adaptor.create(L_QUESTION372)
            ;
            adaptor.addChild(root_0, L_QUESTION372_tree);


            pushFollow(FOLLOW_classical_expr_wrp_in_expr_question3402);
            classical_expr_wrp373=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp373.getTree());

            COLON374=(Token)match(input,COLON,FOLLOW_COLON_in_expr_question3404); 
            COLON374_tree = 
            (Object)adaptor.create(COLON374)
            ;
            adaptor.addChild(root_0, COLON374_tree);


            pushFollow(FOLLOW_classical_expr_wrp_in_expr_question3406);
            classical_expr_wrp375=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp375.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_question"


    public static class assign_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "assign_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:657:1: assign_wrapper : assign -> ^( ASSIGN assign ) ;
    public final ObjcmParser.assign_wrapper_return assign_wrapper() throws RecognitionException {
        ObjcmParser.assign_wrapper_return retval = new ObjcmParser.assign_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.assign_return assign376 =null;


        RewriteRuleSubtreeStream stream_assign=new RewriteRuleSubtreeStream(adaptor,"rule assign");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:658:2: ( assign -> ^( ASSIGN assign ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:658:4: assign
            {
            pushFollow(FOLLOW_assign_in_assign_wrapper3415);
            assign376=assign();

            state._fsp--;

            stream_assign.add(assign376.getTree());

            // AST REWRITE
            // elements: assign
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 658:11: -> ^( ASSIGN assign )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:658:14: ^( ASSIGN assign )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ASSIGN, "ASSIGN")
                , root_1);

                adaptor.addChild(root_1, stream_assign.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "assign_wrapper"


    public static class assign_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "assign"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:660:1: assign : ( L_EQ | L_PLUS_EQ | L_MINUS_EQ | L_MULT_EQ | L_DIV_EQ | L_PERC_EQ | L_LEFT_EQ | L_RIGHT_EQ | L_AND_EQ | L_XOR_EQ | L_OR_EQ );
    public final ObjcmParser.assign_return assign() throws RecognitionException {
        ObjcmParser.assign_return retval = new ObjcmParser.assign_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set377=null;

        Object set377_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:661:2: ( L_EQ | L_PLUS_EQ | L_MINUS_EQ | L_MULT_EQ | L_DIV_EQ | L_PERC_EQ | L_LEFT_EQ | L_RIGHT_EQ | L_AND_EQ | L_XOR_EQ | L_OR_EQ )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set377=(Token)input.LT(1);

            if ( input.LA(1)==L_AND_EQ||(input.LA(1) >= L_DIV_EQ && input.LA(1) <= L_EQ)||input.LA(1)==L_LEFT_EQ||input.LA(1)==L_MINUS_EQ||input.LA(1)==L_MULT_EQ||input.LA(1)==L_OR_EQ||input.LA(1)==L_PERC_EQ||input.LA(1)==L_PLUS_EQ||input.LA(1)==L_RIGHT_EQ||input.LA(1)==L_XOR_EQ ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set377)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "assign"


    public static class simple_expr_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "simple_expr_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:665:1: simple_expr_wrapper : simple_expr -> ^( SIMPLE_EXPR simple_expr ) ;
    public final ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper() throws RecognitionException {
        ObjcmParser.simple_expr_wrapper_return retval = new ObjcmParser.simple_expr_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.simple_expr_return simple_expr378 =null;


        RewriteRuleSubtreeStream stream_simple_expr=new RewriteRuleSubtreeStream(adaptor,"rule simple_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:666:2: ( simple_expr -> ^( SIMPLE_EXPR simple_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:666:4: simple_expr
            {
            pushFollow(FOLLOW_simple_expr_in_simple_expr_wrapper3489);
            simple_expr378=simple_expr();

            state._fsp--;

            stream_simple_expr.add(simple_expr378.getTree());

            // AST REWRITE
            // elements: simple_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 666:16: -> ^( SIMPLE_EXPR simple_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:666:19: ^( SIMPLE_EXPR simple_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SIMPLE_EXPR, "SIMPLE_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_simple_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "simple_expr_wrapper"


    public static class simple_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "simple_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:668:1: simple_expr : expr_or_or -> ^( EXPR_OR_OR expr_or_or ) ;
    public final ObjcmParser.simple_expr_return simple_expr() throws RecognitionException {
        ObjcmParser.simple_expr_return retval = new ObjcmParser.simple_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_or_or_return expr_or_or379 =null;


        RewriteRuleSubtreeStream stream_expr_or_or=new RewriteRuleSubtreeStream(adaptor,"rule expr_or_or");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:669:2: ( expr_or_or -> ^( EXPR_OR_OR expr_or_or ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:669:4: expr_or_or
            {
            pushFollow(FOLLOW_expr_or_or_in_simple_expr3507);
            expr_or_or379=expr_or_or();

            state._fsp--;

            stream_expr_or_or.add(expr_or_or379.getTree());

            // AST REWRITE
            // elements: expr_or_or
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 669:15: -> ^( EXPR_OR_OR expr_or_or )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:669:18: ^( EXPR_OR_OR expr_or_or )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_OR_OR, "EXPR_OR_OR")
                , root_1);

                adaptor.addChild(root_1, stream_expr_or_or.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "simple_expr"


    public static class expr_or_or_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_or_or"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:671:1: expr_or_or : expr_and_and_wrapper ( L_OR_OR simple_expr_wrapper )* ;
    public final ObjcmParser.expr_or_or_return expr_or_or() throws RecognitionException {
        ObjcmParser.expr_or_or_return retval = new ObjcmParser.expr_or_or_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_OR_OR381=null;
        ObjcmParser.expr_and_and_wrapper_return expr_and_and_wrapper380 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper382 =null;


        Object L_OR_OR381_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:672:2: ( expr_and_and_wrapper ( L_OR_OR simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:672:4: expr_and_and_wrapper ( L_OR_OR simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_and_and_wrapper_in_expr_or_or3524);
            expr_and_and_wrapper380=expr_and_and_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_and_and_wrapper380.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:672:25: ( L_OR_OR simple_expr_wrapper )*
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( (LA92_0==L_OR_OR) ) {
                    alt92=1;
                }


                switch (alt92) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:672:26: L_OR_OR simple_expr_wrapper
            	    {
            	    L_OR_OR381=(Token)match(input,L_OR_OR,FOLLOW_L_OR_OR_in_expr_or_or3527); 
            	    L_OR_OR381_tree = 
            	    (Object)adaptor.create(L_OR_OR381)
            	    ;
            	    adaptor.addChild(root_0, L_OR_OR381_tree);


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_or_or3529);
            	    simple_expr_wrapper382=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper382.getTree());

            	    }
            	    break;

            	default :
            	    break loop92;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_or_or"


    public static class expr_and_and_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_and_and_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:674:1: expr_and_and_wrapper : expr_and_and -> ^( EXPR_AND_AND expr_and_and ) ;
    public final ObjcmParser.expr_and_and_wrapper_return expr_and_and_wrapper() throws RecognitionException {
        ObjcmParser.expr_and_and_wrapper_return retval = new ObjcmParser.expr_and_and_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_and_and_return expr_and_and383 =null;


        RewriteRuleSubtreeStream stream_expr_and_and=new RewriteRuleSubtreeStream(adaptor,"rule expr_and_and");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:675:2: ( expr_and_and -> ^( EXPR_AND_AND expr_and_and ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:675:4: expr_and_and
            {
            pushFollow(FOLLOW_expr_and_and_in_expr_and_and_wrapper3540);
            expr_and_and383=expr_and_and();

            state._fsp--;

            stream_expr_and_and.add(expr_and_and383.getTree());

            // AST REWRITE
            // elements: expr_and_and
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 675:17: -> ^( EXPR_AND_AND expr_and_and )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:675:20: ^( EXPR_AND_AND expr_and_and )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_AND_AND, "EXPR_AND_AND")
                , root_1);

                adaptor.addChild(root_1, stream_expr_and_and.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_and_and_wrapper"


    public static class expr_and_and_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_and_and"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:677:1: expr_and_and : expr_or_wrapper ( L_AND_AND simple_expr_wrapper )* ;
    public final ObjcmParser.expr_and_and_return expr_and_and() throws RecognitionException {
        ObjcmParser.expr_and_and_return retval = new ObjcmParser.expr_and_and_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_AND_AND385=null;
        ObjcmParser.expr_or_wrapper_return expr_or_wrapper384 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper386 =null;


        Object L_AND_AND385_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:678:2: ( expr_or_wrapper ( L_AND_AND simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:678:4: expr_or_wrapper ( L_AND_AND simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_or_wrapper_in_expr_and_and3557);
            expr_or_wrapper384=expr_or_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_or_wrapper384.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:678:20: ( L_AND_AND simple_expr_wrapper )*
            loop93:
            do {
                int alt93=2;
                int LA93_0 = input.LA(1);

                if ( (LA93_0==L_AND_AND) ) {
                    alt93=1;
                }


                switch (alt93) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:678:21: L_AND_AND simple_expr_wrapper
            	    {
            	    L_AND_AND385=(Token)match(input,L_AND_AND,FOLLOW_L_AND_AND_in_expr_and_and3560); 
            	    L_AND_AND385_tree = 
            	    (Object)adaptor.create(L_AND_AND385)
            	    ;
            	    adaptor.addChild(root_0, L_AND_AND385_tree);


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_and_and3562);
            	    simple_expr_wrapper386=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper386.getTree());

            	    }
            	    break;

            	default :
            	    break loop93;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_and_and"


    public static class expr_or_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_or_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:680:1: expr_or_wrapper : expr_or -> ^( EXPR_OR expr_or ) ;
    public final ObjcmParser.expr_or_wrapper_return expr_or_wrapper() throws RecognitionException {
        ObjcmParser.expr_or_wrapper_return retval = new ObjcmParser.expr_or_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_or_return expr_or387 =null;


        RewriteRuleSubtreeStream stream_expr_or=new RewriteRuleSubtreeStream(adaptor,"rule expr_or");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:681:2: ( expr_or -> ^( EXPR_OR expr_or ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:681:4: expr_or
            {
            pushFollow(FOLLOW_expr_or_in_expr_or_wrapper3573);
            expr_or387=expr_or();

            state._fsp--;

            stream_expr_or.add(expr_or387.getTree());

            // AST REWRITE
            // elements: expr_or
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 681:12: -> ^( EXPR_OR expr_or )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:681:15: ^( EXPR_OR expr_or )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_OR, "EXPR_OR")
                , root_1);

                adaptor.addChild(root_1, stream_expr_or.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_or_wrapper"


    public static class expr_or_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_or"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:683:1: expr_or : expr_xor_wrapper ( L_OR simple_expr_wrapper )* ;
    public final ObjcmParser.expr_or_return expr_or() throws RecognitionException {
        ObjcmParser.expr_or_return retval = new ObjcmParser.expr_or_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_OR389=null;
        ObjcmParser.expr_xor_wrapper_return expr_xor_wrapper388 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper390 =null;


        Object L_OR389_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:684:2: ( expr_xor_wrapper ( L_OR simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:684:4: expr_xor_wrapper ( L_OR simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_xor_wrapper_in_expr_or3591);
            expr_xor_wrapper388=expr_xor_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_xor_wrapper388.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:684:21: ( L_OR simple_expr_wrapper )*
            loop94:
            do {
                int alt94=2;
                int LA94_0 = input.LA(1);

                if ( (LA94_0==L_OR) ) {
                    alt94=1;
                }


                switch (alt94) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:684:22: L_OR simple_expr_wrapper
            	    {
            	    L_OR389=(Token)match(input,L_OR,FOLLOW_L_OR_in_expr_or3594); 
            	    L_OR389_tree = 
            	    (Object)adaptor.create(L_OR389)
            	    ;
            	    adaptor.addChild(root_0, L_OR389_tree);


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_or3596);
            	    simple_expr_wrapper390=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper390.getTree());

            	    }
            	    break;

            	default :
            	    break loop94;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_or"


    public static class expr_xor_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_xor_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:686:1: expr_xor_wrapper : expr_xor -> ^( EXPR_XOR expr_xor ) ;
    public final ObjcmParser.expr_xor_wrapper_return expr_xor_wrapper() throws RecognitionException {
        ObjcmParser.expr_xor_wrapper_return retval = new ObjcmParser.expr_xor_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_xor_return expr_xor391 =null;


        RewriteRuleSubtreeStream stream_expr_xor=new RewriteRuleSubtreeStream(adaptor,"rule expr_xor");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:687:2: ( expr_xor -> ^( EXPR_XOR expr_xor ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:687:4: expr_xor
            {
            pushFollow(FOLLOW_expr_xor_in_expr_xor_wrapper3607);
            expr_xor391=expr_xor();

            state._fsp--;

            stream_expr_xor.add(expr_xor391.getTree());

            // AST REWRITE
            // elements: expr_xor
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 687:13: -> ^( EXPR_XOR expr_xor )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:687:16: ^( EXPR_XOR expr_xor )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_XOR, "EXPR_XOR")
                , root_1);

                adaptor.addChild(root_1, stream_expr_xor.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_xor_wrapper"


    public static class expr_xor_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_xor"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:689:1: expr_xor : expr_and_wrapper ( L_XOR simple_expr_wrapper )* ;
    public final ObjcmParser.expr_xor_return expr_xor() throws RecognitionException {
        ObjcmParser.expr_xor_return retval = new ObjcmParser.expr_xor_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_XOR393=null;
        ObjcmParser.expr_and_wrapper_return expr_and_wrapper392 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper394 =null;


        Object L_XOR393_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:690:2: ( expr_and_wrapper ( L_XOR simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:690:4: expr_and_wrapper ( L_XOR simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_and_wrapper_in_expr_xor3624);
            expr_and_wrapper392=expr_and_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_and_wrapper392.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:690:21: ( L_XOR simple_expr_wrapper )*
            loop95:
            do {
                int alt95=2;
                int LA95_0 = input.LA(1);

                if ( (LA95_0==L_XOR) ) {
                    alt95=1;
                }


                switch (alt95) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:690:22: L_XOR simple_expr_wrapper
            	    {
            	    L_XOR393=(Token)match(input,L_XOR,FOLLOW_L_XOR_in_expr_xor3627); 
            	    L_XOR393_tree = 
            	    (Object)adaptor.create(L_XOR393)
            	    ;
            	    adaptor.addChild(root_0, L_XOR393_tree);


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_xor3629);
            	    simple_expr_wrapper394=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper394.getTree());

            	    }
            	    break;

            	default :
            	    break loop95;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_xor"


    public static class expr_and_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_and_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:692:1: expr_and_wrapper : expr_and -> ^( EXPR_AND expr_and ) ;
    public final ObjcmParser.expr_and_wrapper_return expr_and_wrapper() throws RecognitionException {
        ObjcmParser.expr_and_wrapper_return retval = new ObjcmParser.expr_and_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_and_return expr_and395 =null;


        RewriteRuleSubtreeStream stream_expr_and=new RewriteRuleSubtreeStream(adaptor,"rule expr_and");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:693:2: ( expr_and -> ^( EXPR_AND expr_and ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:693:4: expr_and
            {
            pushFollow(FOLLOW_expr_and_in_expr_and_wrapper3641);
            expr_and395=expr_and();

            state._fsp--;

            stream_expr_and.add(expr_and395.getTree());

            // AST REWRITE
            // elements: expr_and
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 693:13: -> ^( EXPR_AND expr_and )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:693:16: ^( EXPR_AND expr_and )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_AND, "EXPR_AND")
                , root_1);

                adaptor.addChild(root_1, stream_expr_and.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_and_wrapper"


    public static class expr_and_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_and"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:695:1: expr_and : expr_eq_wrapper ( L_AND simple_expr_wrapper )* ;
    public final ObjcmParser.expr_and_return expr_and() throws RecognitionException {
        ObjcmParser.expr_and_return retval = new ObjcmParser.expr_and_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_AND397=null;
        ObjcmParser.expr_eq_wrapper_return expr_eq_wrapper396 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper398 =null;


        Object L_AND397_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:696:2: ( expr_eq_wrapper ( L_AND simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:696:4: expr_eq_wrapper ( L_AND simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_eq_wrapper_in_expr_and3659);
            expr_eq_wrapper396=expr_eq_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_eq_wrapper396.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:696:20: ( L_AND simple_expr_wrapper )*
            loop96:
            do {
                int alt96=2;
                int LA96_0 = input.LA(1);

                if ( (LA96_0==L_AND) ) {
                    alt96=1;
                }


                switch (alt96) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:696:21: L_AND simple_expr_wrapper
            	    {
            	    L_AND397=(Token)match(input,L_AND,FOLLOW_L_AND_in_expr_and3662); 
            	    L_AND397_tree = 
            	    (Object)adaptor.create(L_AND397)
            	    ;
            	    adaptor.addChild(root_0, L_AND397_tree);


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_and3664);
            	    simple_expr_wrapper398=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper398.getTree());

            	    }
            	    break;

            	default :
            	    break loop96;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_and"


    public static class expr_eq_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_eq_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:698:1: expr_eq_wrapper : expr_eq -> ^( EXPR_EQ expr_eq ) ;
    public final ObjcmParser.expr_eq_wrapper_return expr_eq_wrapper() throws RecognitionException {
        ObjcmParser.expr_eq_wrapper_return retval = new ObjcmParser.expr_eq_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_eq_return expr_eq399 =null;


        RewriteRuleSubtreeStream stream_expr_eq=new RewriteRuleSubtreeStream(adaptor,"rule expr_eq");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:699:2: ( expr_eq -> ^( EXPR_EQ expr_eq ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:699:4: expr_eq
            {
            pushFollow(FOLLOW_expr_eq_in_expr_eq_wrapper3676);
            expr_eq399=expr_eq();

            state._fsp--;

            stream_expr_eq.add(expr_eq399.getTree());

            // AST REWRITE
            // elements: expr_eq
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 699:12: -> ^( EXPR_EQ expr_eq )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:699:15: ^( EXPR_EQ expr_eq )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_EQ, "EXPR_EQ")
                , root_1);

                adaptor.addChild(root_1, stream_expr_eq.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_eq_wrapper"


    public static class expr_eq_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_eq"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:701:1: expr_eq : expr_cond_wrapper ( ( L_EQ_EQ | L_NEQ ) simple_expr_wrapper )* ;
    public final ObjcmParser.expr_eq_return expr_eq() throws RecognitionException {
        ObjcmParser.expr_eq_return retval = new ObjcmParser.expr_eq_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set401=null;
        ObjcmParser.expr_cond_wrapper_return expr_cond_wrapper400 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper402 =null;


        Object set401_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:702:2: ( expr_cond_wrapper ( ( L_EQ_EQ | L_NEQ ) simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:702:4: expr_cond_wrapper ( ( L_EQ_EQ | L_NEQ ) simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_cond_wrapper_in_expr_eq3694);
            expr_cond_wrapper400=expr_cond_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_cond_wrapper400.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:702:22: ( ( L_EQ_EQ | L_NEQ ) simple_expr_wrapper )*
            loop97:
            do {
                int alt97=2;
                int LA97_0 = input.LA(1);

                if ( (LA97_0==L_EQ_EQ||LA97_0==L_NEQ) ) {
                    alt97=1;
                }


                switch (alt97) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:702:23: ( L_EQ_EQ | L_NEQ ) simple_expr_wrapper
            	    {
            	    set401=(Token)input.LT(1);

            	    if ( input.LA(1)==L_EQ_EQ||input.LA(1)==L_NEQ ) {
            	        input.consume();
            	        adaptor.addChild(root_0, 
            	        (Object)adaptor.create(set401)
            	        );
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_eq3705);
            	    simple_expr_wrapper402=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper402.getTree());

            	    }
            	    break;

            	default :
            	    break loop97;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_eq"


    public static class expr_cond_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_cond_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:704:1: expr_cond_wrapper : expr_cond -> ^( EXPR_COND expr_cond ) ;
    public final ObjcmParser.expr_cond_wrapper_return expr_cond_wrapper() throws RecognitionException {
        ObjcmParser.expr_cond_wrapper_return retval = new ObjcmParser.expr_cond_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_cond_return expr_cond403 =null;


        RewriteRuleSubtreeStream stream_expr_cond=new RewriteRuleSubtreeStream(adaptor,"rule expr_cond");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:705:2: ( expr_cond -> ^( EXPR_COND expr_cond ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:705:4: expr_cond
            {
            pushFollow(FOLLOW_expr_cond_in_expr_cond_wrapper3716);
            expr_cond403=expr_cond();

            state._fsp--;

            stream_expr_cond.add(expr_cond403.getTree());

            // AST REWRITE
            // elements: expr_cond
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 705:14: -> ^( EXPR_COND expr_cond )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:705:17: ^( EXPR_COND expr_cond )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_COND, "EXPR_COND")
                , root_1);

                adaptor.addChild(root_1, stream_expr_cond.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_cond_wrapper"


    public static class expr_cond_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_cond"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:707:1: expr_cond : expr_mov_wrapper ( ( L_LESS | L_MORE | L_LESS_EQ | L_MORE_EQ ) simple_expr_wrapper )* ;
    public final ObjcmParser.expr_cond_return expr_cond() throws RecognitionException {
        ObjcmParser.expr_cond_return retval = new ObjcmParser.expr_cond_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set405=null;
        ObjcmParser.expr_mov_wrapper_return expr_mov_wrapper404 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper406 =null;


        Object set405_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:708:2: ( expr_mov_wrapper ( ( L_LESS | L_MORE | L_LESS_EQ | L_MORE_EQ ) simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:708:4: expr_mov_wrapper ( ( L_LESS | L_MORE | L_LESS_EQ | L_MORE_EQ ) simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_mov_wrapper_in_expr_cond3733);
            expr_mov_wrapper404=expr_mov_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_mov_wrapper404.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:708:21: ( ( L_LESS | L_MORE | L_LESS_EQ | L_MORE_EQ ) simple_expr_wrapper )*
            loop98:
            do {
                int alt98=2;
                int LA98_0 = input.LA(1);

                if ( ((LA98_0 >= L_LESS && LA98_0 <= L_LESS_EQ)||(LA98_0 >= L_MORE && LA98_0 <= L_MORE_EQ)) ) {
                    alt98=1;
                }


                switch (alt98) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:708:22: ( L_LESS | L_MORE | L_LESS_EQ | L_MORE_EQ ) simple_expr_wrapper
            	    {
            	    set405=(Token)input.LT(1);

            	    if ( (input.LA(1) >= L_LESS && input.LA(1) <= L_LESS_EQ)||(input.LA(1) >= L_MORE && input.LA(1) <= L_MORE_EQ) ) {
            	        input.consume();
            	        adaptor.addChild(root_0, 
            	        (Object)adaptor.create(set405)
            	        );
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_cond3752);
            	    simple_expr_wrapper406=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper406.getTree());

            	    }
            	    break;

            	default :
            	    break loop98;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_cond"


    public static class expr_mov_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_mov_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:710:1: expr_mov_wrapper : expr_mov -> ^( EXPR_MOV expr_mov ) ;
    public final ObjcmParser.expr_mov_wrapper_return expr_mov_wrapper() throws RecognitionException {
        ObjcmParser.expr_mov_wrapper_return retval = new ObjcmParser.expr_mov_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_mov_return expr_mov407 =null;


        RewriteRuleSubtreeStream stream_expr_mov=new RewriteRuleSubtreeStream(adaptor,"rule expr_mov");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:711:2: ( expr_mov -> ^( EXPR_MOV expr_mov ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:711:4: expr_mov
            {
            pushFollow(FOLLOW_expr_mov_in_expr_mov_wrapper3763);
            expr_mov407=expr_mov();

            state._fsp--;

            stream_expr_mov.add(expr_mov407.getTree());

            // AST REWRITE
            // elements: expr_mov
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 711:13: -> ^( EXPR_MOV expr_mov )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:711:16: ^( EXPR_MOV expr_mov )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_MOV, "EXPR_MOV")
                , root_1);

                adaptor.addChild(root_1, stream_expr_mov.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_mov_wrapper"


    public static class expr_mov_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_mov"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:713:1: expr_mov : expr_add_wrapper ( ( L_LEFT | L_RIGHT ) simple_expr_wrapper )* ;
    public final ObjcmParser.expr_mov_return expr_mov() throws RecognitionException {
        ObjcmParser.expr_mov_return retval = new ObjcmParser.expr_mov_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set409=null;
        ObjcmParser.expr_add_wrapper_return expr_add_wrapper408 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper410 =null;


        Object set409_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:714:2: ( expr_add_wrapper ( ( L_LEFT | L_RIGHT ) simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:714:4: expr_add_wrapper ( ( L_LEFT | L_RIGHT ) simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_add_wrapper_in_expr_mov3781);
            expr_add_wrapper408=expr_add_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_add_wrapper408.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:714:21: ( ( L_LEFT | L_RIGHT ) simple_expr_wrapper )*
            loop99:
            do {
                int alt99=2;
                int LA99_0 = input.LA(1);

                if ( (LA99_0==L_LEFT||LA99_0==L_RIGHT) ) {
                    alt99=1;
                }


                switch (alt99) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:714:22: ( L_LEFT | L_RIGHT ) simple_expr_wrapper
            	    {
            	    set409=(Token)input.LT(1);

            	    if ( input.LA(1)==L_LEFT||input.LA(1)==L_RIGHT ) {
            	        input.consume();
            	        adaptor.addChild(root_0, 
            	        (Object)adaptor.create(set409)
            	        );
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_mov3792);
            	    simple_expr_wrapper410=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper410.getTree());

            	    }
            	    break;

            	default :
            	    break loop99;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_mov"


    public static class expr_add_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_add_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:716:1: expr_add_wrapper : expr_add -> ^( EXPR_ADD expr_add ) ;
    public final ObjcmParser.expr_add_wrapper_return expr_add_wrapper() throws RecognitionException {
        ObjcmParser.expr_add_wrapper_return retval = new ObjcmParser.expr_add_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_add_return expr_add411 =null;


        RewriteRuleSubtreeStream stream_expr_add=new RewriteRuleSubtreeStream(adaptor,"rule expr_add");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:717:2: ( expr_add -> ^( EXPR_ADD expr_add ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:717:4: expr_add
            {
            pushFollow(FOLLOW_expr_add_in_expr_add_wrapper3804);
            expr_add411=expr_add();

            state._fsp--;

            stream_expr_add.add(expr_add411.getTree());

            // AST REWRITE
            // elements: expr_add
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 717:13: -> ^( EXPR_ADD expr_add )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:717:16: ^( EXPR_ADD expr_add )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_ADD, "EXPR_ADD")
                , root_1);

                adaptor.addChild(root_1, stream_expr_add.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_add_wrapper"


    public static class expr_add_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_add"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:719:1: expr_add : expr_mult_wrapper ( ( L_PLUS | L_MINUS ) simple_expr_wrapper )* ;
    public final ObjcmParser.expr_add_return expr_add() throws RecognitionException {
        ObjcmParser.expr_add_return retval = new ObjcmParser.expr_add_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set413=null;
        ObjcmParser.expr_mult_wrapper_return expr_mult_wrapper412 =null;

        ObjcmParser.simple_expr_wrapper_return simple_expr_wrapper414 =null;


        Object set413_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:720:2: ( expr_mult_wrapper ( ( L_PLUS | L_MINUS ) simple_expr_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:720:4: expr_mult_wrapper ( ( L_PLUS | L_MINUS ) simple_expr_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_mult_wrapper_in_expr_add3821);
            expr_mult_wrapper412=expr_mult_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_mult_wrapper412.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:720:22: ( ( L_PLUS | L_MINUS ) simple_expr_wrapper )*
            loop100:
            do {
                int alt100=2;
                int LA100_0 = input.LA(1);

                if ( (LA100_0==L_MINUS||LA100_0==L_PLUS) ) {
                    alt100=1;
                }


                switch (alt100) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:720:23: ( L_PLUS | L_MINUS ) simple_expr_wrapper
            	    {
            	    set413=(Token)input.LT(1);

            	    if ( input.LA(1)==L_MINUS||input.LA(1)==L_PLUS ) {
            	        input.consume();
            	        adaptor.addChild(root_0, 
            	        (Object)adaptor.create(set413)
            	        );
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_simple_expr_wrapper_in_expr_add3832);
            	    simple_expr_wrapper414=simple_expr_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_expr_wrapper414.getTree());

            	    }
            	    break;

            	default :
            	    break loop100;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_add"


    public static class expr_mult_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_mult_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:722:1: expr_mult_wrapper : expr_mult -> ^( EXPR_MULT expr_mult ) ;
    public final ObjcmParser.expr_mult_wrapper_return expr_mult_wrapper() throws RecognitionException {
        ObjcmParser.expr_mult_wrapper_return retval = new ObjcmParser.expr_mult_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_mult_return expr_mult415 =null;


        RewriteRuleSubtreeStream stream_expr_mult=new RewriteRuleSubtreeStream(adaptor,"rule expr_mult");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:723:2: ( expr_mult -> ^( EXPR_MULT expr_mult ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:723:4: expr_mult
            {
            pushFollow(FOLLOW_expr_mult_in_expr_mult_wrapper3843);
            expr_mult415=expr_mult();

            state._fsp--;

            stream_expr_mult.add(expr_mult415.getTree());

            // AST REWRITE
            // elements: expr_mult
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 723:14: -> ^( EXPR_MULT expr_mult )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:723:17: ^( EXPR_MULT expr_mult )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_MULT, "EXPR_MULT")
                , root_1);

                adaptor.addChild(root_1, stream_expr_mult.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_mult_wrapper"


    public static class expr_mult_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_mult"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:725:1: expr_mult : expr_unname_wrapper ( ( ASTERISK | L_DIV | L_PERC ) expr_unname_wrapper )* ;
    public final ObjcmParser.expr_mult_return expr_mult() throws RecognitionException {
        ObjcmParser.expr_mult_return retval = new ObjcmParser.expr_mult_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set417=null;
        ObjcmParser.expr_unname_wrapper_return expr_unname_wrapper416 =null;

        ObjcmParser.expr_unname_wrapper_return expr_unname_wrapper418 =null;


        Object set417_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:726:2: ( expr_unname_wrapper ( ( ASTERISK | L_DIV | L_PERC ) expr_unname_wrapper )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:726:4: expr_unname_wrapper ( ( ASTERISK | L_DIV | L_PERC ) expr_unname_wrapper )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_expr_unname_wrapper_in_expr_mult3860);
            expr_unname_wrapper416=expr_unname_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_unname_wrapper416.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:726:24: ( ( ASTERISK | L_DIV | L_PERC ) expr_unname_wrapper )*
            loop101:
            do {
                int alt101=2;
                int LA101_0 = input.LA(1);

                if ( (LA101_0==ASTERISK||LA101_0==L_DIV||LA101_0==L_PERC) ) {
                    alt101=1;
                }


                switch (alt101) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:726:25: ( ASTERISK | L_DIV | L_PERC ) expr_unname_wrapper
            	    {
            	    set417=(Token)input.LT(1);

            	    if ( input.LA(1)==ASTERISK||input.LA(1)==L_DIV||input.LA(1)==L_PERC ) {
            	        input.consume();
            	        adaptor.addChild(root_0, 
            	        (Object)adaptor.create(set417)
            	        );
            	        state.errorRecovery=false;
            	    }
            	    else {
            	        MismatchedSetException mse = new MismatchedSetException(null,input);
            	        throw mse;
            	    }


            	    pushFollow(FOLLOW_expr_unname_wrapper_in_expr_mult3875);
            	    expr_unname_wrapper418=expr_unname_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, expr_unname_wrapper418.getTree());

            	    }
            	    break;

            	default :
            	    break loop101;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_mult"


    public static class expr_unname_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_unname_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:728:1: expr_unname_wrapper : expr_unname -> ^( EXPR_UNNAME expr_unname ) ;
    public final ObjcmParser.expr_unname_wrapper_return expr_unname_wrapper() throws RecognitionException {
        ObjcmParser.expr_unname_wrapper_return retval = new ObjcmParser.expr_unname_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_unname_return expr_unname419 =null;


        RewriteRuleSubtreeStream stream_expr_unname=new RewriteRuleSubtreeStream(adaptor,"rule expr_unname");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:729:2: ( expr_unname -> ^( EXPR_UNNAME expr_unname ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:729:4: expr_unname
            {
            pushFollow(FOLLOW_expr_unname_in_expr_unname_wrapper3887);
            expr_unname419=expr_unname();

            state._fsp--;

            stream_expr_unname.add(expr_unname419.getTree());

            // AST REWRITE
            // elements: expr_unname
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 729:16: -> ^( EXPR_UNNAME expr_unname )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:729:19: ^( EXPR_UNNAME expr_unname )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_UNNAME, "EXPR_UNNAME")
                , root_1);

                adaptor.addChild(root_1, stream_expr_unname.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_unname_wrapper"


    public static class expr_unname_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_unname"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:731:1: expr_unname : ( ASTERISK ( type_convertion )? )? expr_addr ;
    public final ObjcmParser.expr_unname_return expr_unname() throws RecognitionException {
        ObjcmParser.expr_unname_return retval = new ObjcmParser.expr_unname_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ASTERISK420=null;
        ObjcmParser.type_convertion_return type_convertion421 =null;

        ObjcmParser.expr_addr_return expr_addr422 =null;


        Object ASTERISK420_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:2: ( ( ASTERISK ( type_convertion )? )? expr_addr )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:4: ( ASTERISK ( type_convertion )? )? expr_addr
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:4: ( ASTERISK ( type_convertion )? )?
            int alt103=2;
            int LA103_0 = input.LA(1);

            if ( (LA103_0==ASTERISK) ) {
                alt103=1;
            }
            switch (alt103) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:5: ASTERISK ( type_convertion )?
                    {
                    ASTERISK420=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_expr_unname3908); 
                    ASTERISK420_tree = 
                    (Object)adaptor.create(ASTERISK420)
                    ;
                    adaptor.addChild(root_0, ASTERISK420_tree);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:14: ( type_convertion )?
                    int alt102=2;
                    alt102 = dfa102.predict(input);
                    switch (alt102) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:732:14: type_convertion
                            {
                            pushFollow(FOLLOW_type_convertion_in_expr_unname3910);
                            type_convertion421=type_convertion();

                            state._fsp--;

                            adaptor.addChild(root_0, type_convertion421.getTree());

                            }
                            break;

                    }


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_addr_in_expr_unname3915);
            expr_addr422=expr_addr();

            state._fsp--;

            adaptor.addChild(root_0, expr_addr422.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_unname"


    public static class expr_addr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_addr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:734:1: expr_addr : ( L_AND )? expr_sign ;
    public final ObjcmParser.expr_addr_return expr_addr() throws RecognitionException {
        ObjcmParser.expr_addr_return retval = new ObjcmParser.expr_addr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_AND423=null;
        ObjcmParser.expr_sign_return expr_sign424 =null;


        Object L_AND423_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:735:2: ( ( L_AND )? expr_sign )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:735:4: ( L_AND )? expr_sign
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:735:4: ( L_AND )?
            int alt104=2;
            int LA104_0 = input.LA(1);

            if ( (LA104_0==L_AND) ) {
                alt104=1;
            }
            switch (alt104) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:735:4: L_AND
                    {
                    L_AND423=(Token)match(input,L_AND,FOLLOW_L_AND_in_expr_addr3925); 
                    L_AND423_tree = 
                    (Object)adaptor.create(L_AND423)
                    ;
                    adaptor.addChild(root_0, L_AND423_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_sign_in_expr_addr3928);
            expr_sign424=expr_sign();

            state._fsp--;

            adaptor.addChild(root_0, expr_sign424.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_addr"


    public static class expr_sign_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_sign"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:737:1: expr_sign : ( L_MINUS | L_PLUS )? expr_not_wrapper ;
    public final ObjcmParser.expr_sign_return expr_sign() throws RecognitionException {
        ObjcmParser.expr_sign_return retval = new ObjcmParser.expr_sign_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set425=null;
        ObjcmParser.expr_not_wrapper_return expr_not_wrapper426 =null;


        Object set425_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:738:2: ( ( L_MINUS | L_PLUS )? expr_not_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:738:4: ( L_MINUS | L_PLUS )? expr_not_wrapper
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:738:4: ( L_MINUS | L_PLUS )?
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==L_MINUS||LA105_0==L_PLUS) ) {
                alt105=1;
            }
            switch (alt105) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
                    {
                    set425=(Token)input.LT(1);

                    if ( input.LA(1)==L_MINUS||input.LA(1)==L_PLUS ) {
                        input.consume();
                        adaptor.addChild(root_0, 
                        (Object)adaptor.create(set425)
                        );
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_not_wrapper_in_expr_sign3947);
            expr_not_wrapper426=expr_not_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, expr_not_wrapper426.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_sign"


    public static class expr_not_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_not_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:740:1: expr_not_wrapper : expr_not -> ^( EXPR_NOT expr_not ) ;
    public final ObjcmParser.expr_not_wrapper_return expr_not_wrapper() throws RecognitionException {
        ObjcmParser.expr_not_wrapper_return retval = new ObjcmParser.expr_not_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.expr_not_return expr_not427 =null;


        RewriteRuleSubtreeStream stream_expr_not=new RewriteRuleSubtreeStream(adaptor,"rule expr_not");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:741:2: ( expr_not -> ^( EXPR_NOT expr_not ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:741:4: expr_not
            {
            pushFollow(FOLLOW_expr_not_in_expr_not_wrapper3957);
            expr_not427=expr_not();

            state._fsp--;

            stream_expr_not.add(expr_not427.getTree());

            // AST REWRITE
            // elements: expr_not
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 741:13: -> ^( EXPR_NOT expr_not )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:741:16: ^( EXPR_NOT expr_not )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(EXPR_NOT, "EXPR_NOT")
                , root_1);

                adaptor.addChild(root_1, stream_expr_not.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_not_wrapper"


    public static class expr_not_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_not"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:743:1: expr_not : ( L_NOT )? expr_not2 ;
    public final ObjcmParser.expr_not_return expr_not() throws RecognitionException {
        ObjcmParser.expr_not_return retval = new ObjcmParser.expr_not_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_NOT428=null;
        ObjcmParser.expr_not2_return expr_not2429 =null;


        Object L_NOT428_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:744:2: ( ( L_NOT )? expr_not2 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:744:4: ( L_NOT )? expr_not2
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:744:4: ( L_NOT )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==L_NOT) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:744:4: L_NOT
                    {
                    L_NOT428=(Token)match(input,L_NOT,FOLLOW_L_NOT_in_expr_not3976); 
                    L_NOT428_tree = 
                    (Object)adaptor.create(L_NOT428)
                    ;
                    adaptor.addChild(root_0, L_NOT428_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_not2_in_expr_not3979);
            expr_not2429=expr_not2();

            state._fsp--;

            adaptor.addChild(root_0, expr_not2429.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_not"


    public static class expr_not2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_not2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:746:1: expr_not2 : ( L_TILDA )? expr_size_of ;
    public final ObjcmParser.expr_not2_return expr_not2() throws RecognitionException {
        ObjcmParser.expr_not2_return retval = new ObjcmParser.expr_not2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_TILDA430=null;
        ObjcmParser.expr_size_of_return expr_size_of431 =null;


        Object L_TILDA430_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:747:2: ( ( L_TILDA )? expr_size_of )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:747:4: ( L_TILDA )? expr_size_of
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:747:4: ( L_TILDA )?
            int alt107=2;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==L_TILDA) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:747:4: L_TILDA
                    {
                    L_TILDA430=(Token)match(input,L_TILDA,FOLLOW_L_TILDA_in_expr_not23989); 
                    L_TILDA430_tree = 
                    (Object)adaptor.create(L_TILDA430)
                    ;
                    adaptor.addChild(root_0, L_TILDA430_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_size_of_in_expr_not23992);
            expr_size_of431=expr_size_of();

            state._fsp--;

            adaptor.addChild(root_0, expr_size_of431.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_not2"


    public static class expr_size_of_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_size_of"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:749:1: expr_size_of : ( SIZEOF )? expr_xcrement ;
    public final ObjcmParser.expr_size_of_return expr_size_of() throws RecognitionException {
        ObjcmParser.expr_size_of_return retval = new ObjcmParser.expr_size_of_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SIZEOF432=null;
        ObjcmParser.expr_xcrement_return expr_xcrement433 =null;


        Object SIZEOF432_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:750:2: ( ( SIZEOF )? expr_xcrement )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:750:4: ( SIZEOF )? expr_xcrement
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:750:4: ( SIZEOF )?
            int alt108=2;
            int LA108_0 = input.LA(1);

            if ( (LA108_0==SIZEOF) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:750:4: SIZEOF
                    {
                    SIZEOF432=(Token)match(input,SIZEOF,FOLLOW_SIZEOF_in_expr_size_of4002); 
                    SIZEOF432_tree = 
                    (Object)adaptor.create(SIZEOF432)
                    ;
                    adaptor.addChild(root_0, SIZEOF432_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_expr_xcrement_in_expr_size_of4005);
            expr_xcrement433=expr_xcrement();

            state._fsp--;

            adaptor.addChild(root_0, expr_xcrement433.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_size_of"


    public static class expr_xcrement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "expr_xcrement"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:752:1: expr_xcrement : ( L_PLUS_PLUS | L_MINUS_MINUS )? object_wrapped1 ;
    public final ObjcmParser.expr_xcrement_return expr_xcrement() throws RecognitionException {
        ObjcmParser.expr_xcrement_return retval = new ObjcmParser.expr_xcrement_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set434=null;
        ObjcmParser.object_wrapped1_return object_wrapped1435 =null;


        Object set434_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:753:2: ( ( L_PLUS_PLUS | L_MINUS_MINUS )? object_wrapped1 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:753:4: ( L_PLUS_PLUS | L_MINUS_MINUS )? object_wrapped1
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:753:4: ( L_PLUS_PLUS | L_MINUS_MINUS )?
            int alt109=2;
            int LA109_0 = input.LA(1);

            if ( (LA109_0==L_MINUS_MINUS||LA109_0==L_PLUS_PLUS) ) {
                alt109=1;
            }
            switch (alt109) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
                    {
                    set434=(Token)input.LT(1);

                    if ( input.LA(1)==L_MINUS_MINUS||input.LA(1)==L_PLUS_PLUS ) {
                        input.consume();
                        adaptor.addChild(root_0, 
                        (Object)adaptor.create(set434)
                        );
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }


            pushFollow(FOLLOW_object_wrapped1_in_expr_xcrement4024);
            object_wrapped1435=object_wrapped1();

            state._fsp--;

            adaptor.addChild(root_0, object_wrapped1435.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "expr_xcrement"


    public static class object_wrapped1_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "object_wrapped1"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:755:1: object_wrapped1 : object_wrapped2 ( L_PLUS_PLUS | L_MINUS_MINUS )? ;
    public final ObjcmParser.object_wrapped1_return object_wrapped1() throws RecognitionException {
        ObjcmParser.object_wrapped1_return retval = new ObjcmParser.object_wrapped1_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set437=null;
        ObjcmParser.object_wrapped2_return object_wrapped2436 =null;


        Object set437_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:756:2: ( object_wrapped2 ( L_PLUS_PLUS | L_MINUS_MINUS )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:756:4: object_wrapped2 ( L_PLUS_PLUS | L_MINUS_MINUS )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_object_wrapped2_in_object_wrapped14034);
            object_wrapped2436=object_wrapped2();

            state._fsp--;

            adaptor.addChild(root_0, object_wrapped2436.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:756:20: ( L_PLUS_PLUS | L_MINUS_MINUS )?
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==L_MINUS_MINUS||LA110_0==L_PLUS_PLUS) ) {
                alt110=1;
            }
            switch (alt110) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
                    {
                    set437=(Token)input.LT(1);

                    if ( input.LA(1)==L_MINUS_MINUS||input.LA(1)==L_PLUS_PLUS ) {
                        input.consume();
                        adaptor.addChild(root_0, 
                        (Object)adaptor.create(set437)
                        );
                        state.errorRecovery=false;
                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        throw mse;
                    }


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "object_wrapped1"


    public static class object_wrapped2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "object_wrapped2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:759:1: object_wrapped2 : ( ( 'unsigned' )? object_name ( generic )? | method_call_wrapper ( id_part_end )? | L_BR l_br_end -> ^( L_BR_TOKEN l_br_end ) | const_expr_wrapper | a_started );
    public final ObjcmParser.object_wrapped2_return object_wrapped2() throws RecognitionException {
        ObjcmParser.object_wrapped2_return retval = new ObjcmParser.object_wrapped2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal438=null;
        Token L_BR443=null;
        ObjcmParser.object_name_return object_name439 =null;

        ObjcmParser.generic_return generic440 =null;

        ObjcmParser.method_call_wrapper_return method_call_wrapper441 =null;

        ObjcmParser.id_part_end_return id_part_end442 =null;

        ObjcmParser.l_br_end_return l_br_end444 =null;

        ObjcmParser.const_expr_wrapper_return const_expr_wrapper445 =null;

        ObjcmParser.a_started_return a_started446 =null;


        Object string_literal438_tree=null;
        Object L_BR443_tree=null;
        RewriteRuleTokenStream stream_L_BR=new RewriteRuleTokenStream(adaptor,"token L_BR");
        RewriteRuleSubtreeStream stream_l_br_end=new RewriteRuleSubtreeStream(adaptor,"rule l_br_end");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:2: ( ( 'unsigned' )? object_name ( generic )? | method_call_wrapper ( id_part_end )? | L_BR l_br_end -> ^( L_BR_TOKEN l_br_end ) | const_expr_wrapper | a_started )
            int alt114=5;
            switch ( input.LA(1) ) {
            case ID:
            case 191:
            case 194:
            case 202:
            case 205:
            case 210:
                {
                alt114=1;
                }
                break;
            case L_KBR:
                {
                alt114=2;
                }
                break;
            case L_BR:
                {
                alt114=3;
                }
                break;
            case NUMBER:
            case STRING_LITERAL:
            case STRING_LITERAL2:
            case STRING_LITERAL3:
            case 188:
            case 204:
                {
                alt114=4;
                }
                break;
            case 175:
            case 182:
            case 184:
                {
                alt114=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 114, 0, input);

                throw nvae;

            }

            switch (alt114) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:5: ( 'unsigned' )? object_name ( generic )?
                    {
                    root_0 = (Object)adaptor.nil();


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:5: ( 'unsigned' )?
                    int alt111=2;
                    int LA111_0 = input.LA(1);

                    if ( (LA111_0==210) ) {
                        alt111=1;
                    }
                    switch (alt111) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:5: 'unsigned'
                            {
                            string_literal438=(Token)match(input,210,FOLLOW_210_in_object_wrapped24055); 
                            string_literal438_tree = 
                            (Object)adaptor.create(string_literal438)
                            ;
                            adaptor.addChild(root_0, string_literal438_tree);


                            }
                            break;

                    }


                    pushFollow(FOLLOW_object_name_in_object_wrapped24058);
                    object_name439=object_name();

                    state._fsp--;

                    adaptor.addChild(root_0, object_name439.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:29: ( generic )?
                    int alt112=2;
                    alt112 = dfa112.predict(input);
                    switch (alt112) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:760:29: generic
                            {
                            pushFollow(FOLLOW_generic_in_object_wrapped24060);
                            generic440=generic();

                            state._fsp--;

                            adaptor.addChild(root_0, generic440.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:761:4: method_call_wrapper ( id_part_end )?
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_method_call_wrapper_in_object_wrapped24066);
                    method_call_wrapper441=method_call_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, method_call_wrapper441.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:761:24: ( id_part_end )?
                    int alt113=2;
                    int LA113_0 = input.LA(1);

                    if ( (LA113_0==DOT||LA113_0==172) ) {
                        alt113=1;
                    }
                    switch (alt113) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:761:24: id_part_end
                            {
                            pushFollow(FOLLOW_id_part_end_in_object_wrapped24068);
                            id_part_end442=id_part_end();

                            state._fsp--;

                            adaptor.addChild(root_0, id_part_end442.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:762:4: L_BR l_br_end
                    {
                    L_BR443=(Token)match(input,L_BR,FOLLOW_L_BR_in_object_wrapped24074);  
                    stream_L_BR.add(L_BR443);


                    pushFollow(FOLLOW_l_br_end_in_object_wrapped24076);
                    l_br_end444=l_br_end();

                    state._fsp--;

                    stream_l_br_end.add(l_br_end444.getTree());

                    // AST REWRITE
                    // elements: l_br_end
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 762:18: -> ^( L_BR_TOKEN l_br_end )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:762:21: ^( L_BR_TOKEN l_br_end )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(L_BR_TOKEN, "L_BR_TOKEN")
                        , root_1);

                        adaptor.addChild(root_1, stream_l_br_end.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:763:4: const_expr_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_const_expr_wrapper_in_object_wrapped24089);
                    const_expr_wrapper445=const_expr_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, const_expr_wrapper445.getTree());

                    }
                    break;
                case 5 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:764:4: a_started
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_a_started_in_object_wrapped24094);
                    a_started446=a_started();

                    state._fsp--;

                    adaptor.addChild(root_0, a_started446.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "object_wrapped2"


    public static class l_br_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "l_br_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:767:1: l_br_end : ( type_convertion_internal_wrapper R_BR classical_expr_wrp -> ^( TYPE_CONVERTION2 type_convertion_internal_wrapper classical_expr_wrp ) | classical_expr_wrp R_BR ( id_part_end )? );
    public final ObjcmParser.l_br_end_return l_br_end() throws RecognitionException {
        ObjcmParser.l_br_end_return retval = new ObjcmParser.l_br_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token R_BR448=null;
        Token R_BR451=null;
        ObjcmParser.type_convertion_internal_wrapper_return type_convertion_internal_wrapper447 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp449 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp450 =null;

        ObjcmParser.id_part_end_return id_part_end452 =null;


        Object R_BR448_tree=null;
        Object R_BR451_tree=null;
        RewriteRuleTokenStream stream_R_BR=new RewriteRuleTokenStream(adaptor,"token R_BR");
        RewriteRuleSubtreeStream stream_type_convertion_internal_wrapper=new RewriteRuleSubtreeStream(adaptor,"rule type_convertion_internal_wrapper");
        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:767:9: ( type_convertion_internal_wrapper R_BR classical_expr_wrp -> ^( TYPE_CONVERTION2 type_convertion_internal_wrapper classical_expr_wrp ) | classical_expr_wrp R_BR ( id_part_end )? )
            int alt116=2;
            alt116 = dfa116.predict(input);
            switch (alt116) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:767:11: type_convertion_internal_wrapper R_BR classical_expr_wrp
                    {
                    pushFollow(FOLLOW_type_convertion_internal_wrapper_in_l_br_end4103);
                    type_convertion_internal_wrapper447=type_convertion_internal_wrapper();

                    state._fsp--;

                    stream_type_convertion_internal_wrapper.add(type_convertion_internal_wrapper447.getTree());

                    R_BR448=(Token)match(input,R_BR,FOLLOW_R_BR_in_l_br_end4105);  
                    stream_R_BR.add(R_BR448);


                    pushFollow(FOLLOW_classical_expr_wrp_in_l_br_end4107);
                    classical_expr_wrp449=classical_expr_wrp();

                    state._fsp--;

                    stream_classical_expr_wrp.add(classical_expr_wrp449.getTree());

                    // AST REWRITE
                    // elements: type_convertion_internal_wrapper, classical_expr_wrp
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 767:68: -> ^( TYPE_CONVERTION2 type_convertion_internal_wrapper classical_expr_wrp )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:767:71: ^( TYPE_CONVERTION2 type_convertion_internal_wrapper classical_expr_wrp )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(TYPE_CONVERTION2, "TYPE_CONVERTION2")
                        , root_1);

                        adaptor.addChild(root_1, stream_type_convertion_internal_wrapper.nextTree());

                        adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:768:4: classical_expr_wrp R_BR ( id_part_end )?
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_classical_expr_wrp_in_l_br_end4122);
                    classical_expr_wrp450=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp450.getTree());

                    R_BR451=(Token)match(input,R_BR,FOLLOW_R_BR_in_l_br_end4124); 
                    R_BR451_tree = 
                    (Object)adaptor.create(R_BR451)
                    ;
                    adaptor.addChild(root_0, R_BR451_tree);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:768:28: ( id_part_end )?
                    int alt115=2;
                    int LA115_0 = input.LA(1);

                    if ( (LA115_0==DOT||LA115_0==172) ) {
                        alt115=1;
                    }
                    switch (alt115) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:768:28: id_part_end
                            {
                            pushFollow(FOLLOW_id_part_end_in_l_br_end4126);
                            id_part_end452=id_part_end();

                            state._fsp--;

                            adaptor.addChild(root_0, id_part_end452.getTree());

                            }
                            break;

                    }


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "l_br_end"


    public static class function_brackets_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "function_brackets_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:771:1: function_brackets_wrapper : function_brackets -> ^( FUNCTION function_brackets ) ;
    public final ObjcmParser.function_brackets_wrapper_return function_brackets_wrapper() throws RecognitionException {
        ObjcmParser.function_brackets_wrapper_return retval = new ObjcmParser.function_brackets_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.function_brackets_return function_brackets453 =null;


        RewriteRuleSubtreeStream stream_function_brackets=new RewriteRuleSubtreeStream(adaptor,"rule function_brackets");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:772:2: ( function_brackets -> ^( FUNCTION function_brackets ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:772:4: function_brackets
            {
            pushFollow(FOLLOW_function_brackets_in_function_brackets_wrapper4140);
            function_brackets453=function_brackets();

            state._fsp--;

            stream_function_brackets.add(function_brackets453.getTree());

            // AST REWRITE
            // elements: function_brackets
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 772:22: -> ^( FUNCTION function_brackets )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:772:25: ^( FUNCTION function_brackets )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FUNCTION, "FUNCTION")
                , root_1);

                adaptor.addChild(root_1, stream_function_brackets.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "function_brackets_wrapper"


    public static class function_brackets_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "function_brackets"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:774:1: function_brackets : L_BR ( classical_expr_wrp ( COMMA classical_expr_wrp )* )? R_BR ;
    public final ObjcmParser.function_brackets_return function_brackets() throws RecognitionException {
        ObjcmParser.function_brackets_return retval = new ObjcmParser.function_brackets_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR454=null;
        Token COMMA456=null;
        Token R_BR458=null;
        ObjcmParser.classical_expr_wrp_return classical_expr_wrp455 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp457 =null;


        Object L_BR454_tree=null;
        Object COMMA456_tree=null;
        Object R_BR458_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:2: ( L_BR ( classical_expr_wrp ( COMMA classical_expr_wrp )* )? R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:4: L_BR ( classical_expr_wrp ( COMMA classical_expr_wrp )* )? R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR454=(Token)match(input,L_BR,FOLLOW_L_BR_in_function_brackets4159); 
            L_BR454_tree = 
            (Object)adaptor.create(L_BR454)
            ;
            adaptor.addChild(root_0, L_BR454_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:9: ( classical_expr_wrp ( COMMA classical_expr_wrp )* )?
            int alt118=2;
            int LA118_0 = input.LA(1);

            if ( (LA118_0==ASTERISK||LA118_0==ID||LA118_0==L_AND||LA118_0==L_BR||LA118_0==L_KBR||LA118_0==L_MINUS||LA118_0==L_MINUS_MINUS||LA118_0==L_NOT||LA118_0==L_PLUS||LA118_0==L_PLUS_PLUS||LA118_0==L_TILDA||LA118_0==NUMBER||LA118_0==SIZEOF||(LA118_0 >= STRING_LITERAL && LA118_0 <= STRING_LITERAL3)||LA118_0==175||LA118_0==182||LA118_0==184||LA118_0==188||LA118_0==191||LA118_0==194||LA118_0==202||(LA118_0 >= 204 && LA118_0 <= 205)||LA118_0==210) ) {
                alt118=1;
            }
            switch (alt118) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:10: classical_expr_wrp ( COMMA classical_expr_wrp )*
                    {
                    pushFollow(FOLLOW_classical_expr_wrp_in_function_brackets4162);
                    classical_expr_wrp455=classical_expr_wrp();

                    state._fsp--;

                    adaptor.addChild(root_0, classical_expr_wrp455.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:29: ( COMMA classical_expr_wrp )*
                    loop117:
                    do {
                        int alt117=2;
                        int LA117_0 = input.LA(1);

                        if ( (LA117_0==COMMA) ) {
                            alt117=1;
                        }


                        switch (alt117) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:775:30: COMMA classical_expr_wrp
                    	    {
                    	    COMMA456=(Token)match(input,COMMA,FOLLOW_COMMA_in_function_brackets4165); 
                    	    COMMA456_tree = 
                    	    (Object)adaptor.create(COMMA456)
                    	    ;
                    	    adaptor.addChild(root_0, COMMA456_tree);


                    	    pushFollow(FOLLOW_classical_expr_wrp_in_function_brackets4167);
                    	    classical_expr_wrp457=classical_expr_wrp();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, classical_expr_wrp457.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop117;
                        }
                    } while (true);


                    }
                    break;

            }


            R_BR458=(Token)match(input,R_BR,FOLLOW_R_BR_in_function_brackets4173); 
            R_BR458_tree = 
            (Object)adaptor.create(R_BR458)
            ;
            adaptor.addChild(root_0, R_BR458_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "function_brackets"


    public static class index_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "index_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:777:1: index_wrapper : index -> ^( INDEX index ) ;
    public final ObjcmParser.index_wrapper_return index_wrapper() throws RecognitionException {
        ObjcmParser.index_wrapper_return retval = new ObjcmParser.index_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.index_return index459 =null;


        RewriteRuleSubtreeStream stream_index=new RewriteRuleSubtreeStream(adaptor,"rule index");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:778:2: ( index -> ^( INDEX index ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:778:4: index
            {
            pushFollow(FOLLOW_index_in_index_wrapper4183);
            index459=index();

            state._fsp--;

            stream_index.add(index459.getTree());

            // AST REWRITE
            // elements: index
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 778:10: -> ^( INDEX index )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:778:13: ^( INDEX index )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(INDEX, "INDEX")
                , root_1);

                adaptor.addChild(root_1, stream_index.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "index_wrapper"


    public static class index_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "index"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:780:1: index : L_KBR ( index_number_wrapper )? R_KBR ;
    public final ObjcmParser.index_return index() throws RecognitionException {
        ObjcmParser.index_return retval = new ObjcmParser.index_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_KBR460=null;
        Token R_KBR462=null;
        ObjcmParser.index_number_wrapper_return index_number_wrapper461 =null;


        Object L_KBR460_tree=null;
        Object R_KBR462_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:780:7: ( L_KBR ( index_number_wrapper )? R_KBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:780:9: L_KBR ( index_number_wrapper )? R_KBR
            {
            root_0 = (Object)adaptor.nil();


            L_KBR460=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_index4200); 
            L_KBR460_tree = 
            (Object)adaptor.create(L_KBR460)
            ;
            adaptor.addChild(root_0, L_KBR460_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:780:15: ( index_number_wrapper )?
            int alt119=2;
            int LA119_0 = input.LA(1);

            if ( (LA119_0==ASTERISK||LA119_0==ID||LA119_0==L_AND||LA119_0==L_BR||LA119_0==L_KBR||LA119_0==L_MINUS||LA119_0==L_MINUS_MINUS||LA119_0==L_NOT||LA119_0==L_PLUS||LA119_0==L_PLUS_PLUS||LA119_0==L_TILDA||LA119_0==NUMBER||LA119_0==SIZEOF||(LA119_0 >= STRING_LITERAL && LA119_0 <= STRING_LITERAL3)||LA119_0==175||LA119_0==182||LA119_0==184||LA119_0==188||LA119_0==191||LA119_0==194||LA119_0==202||(LA119_0 >= 204 && LA119_0 <= 205)||LA119_0==210) ) {
                alt119=1;
            }
            switch (alt119) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:780:15: index_number_wrapper
                    {
                    pushFollow(FOLLOW_index_number_wrapper_in_index4202);
                    index_number_wrapper461=index_number_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, index_number_wrapper461.getTree());

                    }
                    break;

            }


            R_KBR462=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_index4205); 
            R_KBR462_tree = 
            (Object)adaptor.create(R_KBR462)
            ;
            adaptor.addChild(root_0, R_KBR462_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "index"


    public static class index_number_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "index_number_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:782:1: index_number_wrapper : classical_expr_wrp -> ^( INDEX_NUMBER classical_expr_wrp ) ;
    public final ObjcmParser.index_number_wrapper_return index_number_wrapper() throws RecognitionException {
        ObjcmParser.index_number_wrapper_return retval = new ObjcmParser.index_number_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp463 =null;


        RewriteRuleSubtreeStream stream_classical_expr_wrp=new RewriteRuleSubtreeStream(adaptor,"rule classical_expr_wrp");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:783:2: ( classical_expr_wrp -> ^( INDEX_NUMBER classical_expr_wrp ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:783:4: classical_expr_wrp
            {
            pushFollow(FOLLOW_classical_expr_wrp_in_index_number_wrapper4214);
            classical_expr_wrp463=classical_expr_wrp();

            state._fsp--;

            stream_classical_expr_wrp.add(classical_expr_wrp463.getTree());

            // AST REWRITE
            // elements: classical_expr_wrp
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 783:23: -> ^( INDEX_NUMBER classical_expr_wrp )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:783:26: ^( INDEX_NUMBER classical_expr_wrp )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(INDEX_NUMBER, "INDEX_NUMBER")
                , root_1);

                adaptor.addChild(root_1, stream_classical_expr_wrp.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "index_number_wrapper"


    public static class struct_init_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:785:1: struct_init_wrapper : struct_init -> ^( STRUCT_INIT struct_init ) ;
    public final ObjcmParser.struct_init_wrapper_return struct_init_wrapper() throws RecognitionException {
        ObjcmParser.struct_init_wrapper_return retval = new ObjcmParser.struct_init_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.struct_init_return struct_init464 =null;


        RewriteRuleSubtreeStream stream_struct_init=new RewriteRuleSubtreeStream(adaptor,"rule struct_init");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:786:2: ( struct_init -> ^( STRUCT_INIT struct_init ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:786:4: struct_init
            {
            pushFollow(FOLLOW_struct_init_in_struct_init_wrapper4231);
            struct_init464=struct_init();

            state._fsp--;

            stream_struct_init.add(struct_init464.getTree());

            // AST REWRITE
            // elements: struct_init
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 786:16: -> ^( STRUCT_INIT struct_init )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:786:19: ^( STRUCT_INIT struct_init )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STRUCT_INIT, "STRUCT_INIT")
                , root_1);

                adaptor.addChild(root_1, stream_struct_init.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init_wrapper"


    public static class struct_init_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:788:1: struct_init : L_BR ( STRUCT_PREFIX )? struct_name R_BR L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR ;
    public final ObjcmParser.struct_init_return struct_init() throws RecognitionException {
        ObjcmParser.struct_init_return retval = new ObjcmParser.struct_init_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR465=null;
        Token STRUCT_PREFIX466=null;
        Token R_BR468=null;
        Token L_FBR469=null;
        Token COMMA471=null;
        Token R_FBR473=null;
        ObjcmParser.struct_name_return struct_name467 =null;

        ObjcmParser.struct_init_line_return struct_init_line470 =null;

        ObjcmParser.struct_init_line_return struct_init_line472 =null;


        Object L_BR465_tree=null;
        Object STRUCT_PREFIX466_tree=null;
        Object R_BR468_tree=null;
        Object L_FBR469_tree=null;
        Object COMMA471_tree=null;
        Object R_FBR473_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:789:2: ( L_BR ( STRUCT_PREFIX )? struct_name R_BR L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:789:4: L_BR ( STRUCT_PREFIX )? struct_name R_BR L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_BR465=(Token)match(input,L_BR,FOLLOW_L_BR_in_struct_init4248); 
            L_BR465_tree = 
            (Object)adaptor.create(L_BR465)
            ;
            adaptor.addChild(root_0, L_BR465_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:789:10: ( STRUCT_PREFIX )?
            int alt120=2;
            int LA120_0 = input.LA(1);

            if ( (LA120_0==STRUCT_PREFIX) ) {
                alt120=1;
            }
            switch (alt120) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:789:10: STRUCT_PREFIX
                    {
                    STRUCT_PREFIX466=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_struct_init4251); 
                    STRUCT_PREFIX466_tree = 
                    (Object)adaptor.create(STRUCT_PREFIX466)
                    ;
                    adaptor.addChild(root_0, STRUCT_PREFIX466_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_struct_name_in_struct_init4254);
            struct_name467=struct_name();

            state._fsp--;

            adaptor.addChild(root_0, struct_name467.getTree());

            R_BR468=(Token)match(input,R_BR,FOLLOW_R_BR_in_struct_init4257); 
            R_BR468_tree = 
            (Object)adaptor.create(R_BR468)
            ;
            adaptor.addChild(root_0, R_BR468_tree);


            L_FBR469=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_struct_init4260); 
            L_FBR469_tree = 
            (Object)adaptor.create(L_FBR469)
            ;
            adaptor.addChild(root_0, L_FBR469_tree);


            pushFollow(FOLLOW_struct_init_line_in_struct_init4266);
            struct_init_line470=struct_init_line();

            state._fsp--;

            adaptor.addChild(root_0, struct_init_line470.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:790:21: ( COMMA struct_init_line )*
            loop121:
            do {
                int alt121=2;
                int LA121_0 = input.LA(1);

                if ( (LA121_0==COMMA) ) {
                    alt121=1;
                }


                switch (alt121) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:790:22: COMMA struct_init_line
            	    {
            	    COMMA471=(Token)match(input,COMMA,FOLLOW_COMMA_in_struct_init4269); 
            	    COMMA471_tree = 
            	    (Object)adaptor.create(COMMA471)
            	    ;
            	    adaptor.addChild(root_0, COMMA471_tree);


            	    pushFollow(FOLLOW_struct_init_line_in_struct_init4272);
            	    struct_init_line472=struct_init_line();

            	    state._fsp--;

            	    adaptor.addChild(root_0, struct_init_line472.getTree());

            	    }
            	    break;

            	default :
            	    break loop121;
                }
            } while (true);


            R_FBR473=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_struct_init4278); 
            R_FBR473_tree = 
            (Object)adaptor.create(R_FBR473)
            ;
            adaptor.addChild(root_0, R_FBR473_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init"


    public static class struct_name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_name"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:794:1: struct_name : ID -> ^( NAME ID ) ;
    public final ObjcmParser.struct_name_return struct_name() throws RecognitionException {
        ObjcmParser.struct_name_return retval = new ObjcmParser.struct_name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID474=null;

        Object ID474_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:795:2: ( ID -> ^( NAME ID ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:795:4: ID
            {
            ID474=(Token)match(input,ID,FOLLOW_ID_in_struct_name4292);  
            stream_ID.add(ID474);


            // AST REWRITE
            // elements: ID
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 795:7: -> ^( NAME ID )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:795:10: ^( NAME ID )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(NAME, "NAME")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ID.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_name"


    public static class struct_init2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:797:1: struct_init2 : L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR ;
    public final ObjcmParser.struct_init2_return struct_init2() throws RecognitionException {
        ObjcmParser.struct_init2_return retval = new ObjcmParser.struct_init2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR475=null;
        Token COMMA477=null;
        Token R_FBR479=null;
        ObjcmParser.struct_init_line_return struct_init_line476 =null;

        ObjcmParser.struct_init_line_return struct_init_line478 =null;


        Object L_FBR475_tree=null;
        Object COMMA477_tree=null;
        Object R_FBR479_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:798:2: ( L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:798:4: L_FBR struct_init_line ( COMMA struct_init_line )* R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR475=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_struct_init24311); 
            L_FBR475_tree = 
            (Object)adaptor.create(L_FBR475)
            ;
            adaptor.addChild(root_0, L_FBR475_tree);


            pushFollow(FOLLOW_struct_init_line_in_struct_init24317);
            struct_init_line476=struct_init_line();

            state._fsp--;

            adaptor.addChild(root_0, struct_init_line476.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:799:21: ( COMMA struct_init_line )*
            loop122:
            do {
                int alt122=2;
                int LA122_0 = input.LA(1);

                if ( (LA122_0==COMMA) ) {
                    alt122=1;
                }


                switch (alt122) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:799:22: COMMA struct_init_line
            	    {
            	    COMMA477=(Token)match(input,COMMA,FOLLOW_COMMA_in_struct_init24320); 
            	    COMMA477_tree = 
            	    (Object)adaptor.create(COMMA477)
            	    ;
            	    adaptor.addChild(root_0, COMMA477_tree);


            	    pushFollow(FOLLOW_struct_init_line_in_struct_init24323);
            	    struct_init_line478=struct_init_line();

            	    state._fsp--;

            	    adaptor.addChild(root_0, struct_init_line478.getTree());

            	    }
            	    break;

            	default :
            	    break loop122;
                }
            } while (true);


            R_FBR479=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_struct_init24329); 
            R_FBR479_tree = 
            (Object)adaptor.create(R_FBR479)
            ;
            adaptor.addChild(root_0, R_FBR479_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init2"


    public static class struct_init_line_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init_line"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:803:1: struct_init_line : ( struct_init_var | struct_init_expression );
    public final ObjcmParser.struct_init_line_return struct_init_line() throws RecognitionException {
        ObjcmParser.struct_init_line_return retval = new ObjcmParser.struct_init_line_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.struct_init_var_return struct_init_var480 =null;

        ObjcmParser.struct_init_expression_return struct_init_expression481 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:804:2: ( struct_init_var | struct_init_expression )
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==DOT) ) {
                alt123=1;
            }
            else if ( (LA123_0==ASTERISK||LA123_0==ID||LA123_0==L_AND||LA123_0==L_BR||LA123_0==L_KBR||LA123_0==L_MINUS||LA123_0==L_MINUS_MINUS||LA123_0==L_NOT||LA123_0==L_PLUS||LA123_0==L_PLUS_PLUS||LA123_0==L_TILDA||LA123_0==NUMBER||LA123_0==SIZEOF||(LA123_0 >= STRING_LITERAL && LA123_0 <= STRING_LITERAL3)||LA123_0==175||LA123_0==182||LA123_0==184||LA123_0==188||LA123_0==191||LA123_0==194||LA123_0==202||(LA123_0 >= 204 && LA123_0 <= 205)||LA123_0==210) ) {
                alt123=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;

            }
            switch (alt123) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:804:4: struct_init_var
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_struct_init_var_in_struct_init_line4342);
                    struct_init_var480=struct_init_var();

                    state._fsp--;

                    adaptor.addChild(root_0, struct_init_var480.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:805:4: struct_init_expression
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_struct_init_expression_in_struct_init_line4347);
                    struct_init_expression481=struct_init_expression();

                    state._fsp--;

                    adaptor.addChild(root_0, struct_init_expression481.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init_line"


    public static class struct_init_expression_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init_expression"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:808:1: struct_init_expression : classical_expr_wrp ;
    public final ObjcmParser.struct_init_expression_return struct_init_expression() throws RecognitionException {
        ObjcmParser.struct_init_expression_return retval = new ObjcmParser.struct_init_expression_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp482 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:809:2: ( classical_expr_wrp )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:809:4: classical_expr_wrp
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_classical_expr_wrp_in_struct_init_expression4360);
            classical_expr_wrp482=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp482.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init_expression"


    public static class struct_init_method_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init_method"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:811:1: struct_init_method : classical_expr_wrp ;
    public final ObjcmParser.struct_init_method_return struct_init_method() throws RecognitionException {
        ObjcmParser.struct_init_method_return retval = new ObjcmParser.struct_init_method_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp483 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:812:2: ( classical_expr_wrp )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:812:4: classical_expr_wrp
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_classical_expr_wrp_in_struct_init_method4371);
            classical_expr_wrp483=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp483.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init_method"


    public static class struct_init_var_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_init_var"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:814:1: struct_init_var : ( DOT id_part )+ L_EQ ( in_q_brackets | expression ) ;
    public final ObjcmParser.struct_init_var_return struct_init_var() throws RecognitionException {
        ObjcmParser.struct_init_var_return retval = new ObjcmParser.struct_init_var_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token DOT484=null;
        Token L_EQ486=null;
        ObjcmParser.id_part_return id_part485 =null;

        ObjcmParser.in_q_brackets_return in_q_brackets487 =null;

        ObjcmParser.expression_return expression488 =null;


        Object DOT484_tree=null;
        Object L_EQ486_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:2: ( ( DOT id_part )+ L_EQ ( in_q_brackets | expression ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:4: ( DOT id_part )+ L_EQ ( in_q_brackets | expression )
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:4: ( DOT id_part )+
            int cnt124=0;
            loop124:
            do {
                int alt124=2;
                int LA124_0 = input.LA(1);

                if ( (LA124_0==DOT) ) {
                    alt124=1;
                }


                switch (alt124) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:5: DOT id_part
            	    {
            	    DOT484=(Token)match(input,DOT,FOLLOW_DOT_in_struct_init_var4383); 
            	    DOT484_tree = 
            	    (Object)adaptor.create(DOT484)
            	    ;
            	    adaptor.addChild(root_0, DOT484_tree);


            	    pushFollow(FOLLOW_id_part_in_struct_init_var4385);
            	    id_part485=id_part();

            	    state._fsp--;

            	    adaptor.addChild(root_0, id_part485.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt124 >= 1 ) break loop124;
                        EarlyExitException eee =
                            new EarlyExitException(124, input);
                        throw eee;
                }
                cnt124++;
            } while (true);


            L_EQ486=(Token)match(input,L_EQ,FOLLOW_L_EQ_in_struct_init_var4390); 
            L_EQ486_tree = 
            (Object)adaptor.create(L_EQ486)
            ;
            adaptor.addChild(root_0, L_EQ486_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:26: ( in_q_brackets | expression )
            int alt125=2;
            int LA125_0 = input.LA(1);

            if ( (LA125_0==L_FBR) ) {
                alt125=1;
            }
            else if ( (LA125_0==ASTERISK||LA125_0==ID||LA125_0==L_AND||LA125_0==L_BR||LA125_0==L_KBR||LA125_0==L_MINUS||LA125_0==L_MINUS_MINUS||LA125_0==L_NOT||LA125_0==L_PLUS||LA125_0==L_PLUS_PLUS||LA125_0==L_TILDA||LA125_0==NUMBER||LA125_0==SIZEOF||(LA125_0 >= STRING_LITERAL && LA125_0 <= STRING_LITERAL3)||LA125_0==175||LA125_0==182||LA125_0==184||LA125_0==188||LA125_0==191||LA125_0==194||LA125_0==202||(LA125_0 >= 204 && LA125_0 <= 205)||LA125_0==210) ) {
                alt125=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 125, 0, input);

                throw nvae;

            }
            switch (alt125) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:27: in_q_brackets
                    {
                    pushFollow(FOLLOW_in_q_brackets_in_struct_init_var4394);
                    in_q_brackets487=in_q_brackets();

                    state._fsp--;

                    adaptor.addChild(root_0, in_q_brackets487.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:815:43: expression
                    {
                    pushFollow(FOLLOW_expression_in_struct_init_var4398);
                    expression488=expression();

                    state._fsp--;

                    adaptor.addChild(root_0, expression488.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_init_var"


    public static class a_started_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_started"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:817:1: a_started : ( a_selector_wrapper | a_encode_wrapper | a_protocol_wrapper );
    public final ObjcmParser.a_started_return a_started() throws RecognitionException {
        ObjcmParser.a_started_return retval = new ObjcmParser.a_started_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.a_selector_wrapper_return a_selector_wrapper489 =null;

        ObjcmParser.a_encode_wrapper_return a_encode_wrapper490 =null;

        ObjcmParser.a_protocol_wrapper_return a_protocol_wrapper491 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:818:2: ( a_selector_wrapper | a_encode_wrapper | a_protocol_wrapper )
            int alt126=3;
            switch ( input.LA(1) ) {
            case 184:
                {
                alt126=1;
                }
                break;
            case 175:
                {
                alt126=2;
                }
                break;
            case 182:
                {
                alt126=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 126, 0, input);

                throw nvae;

            }

            switch (alt126) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:818:4: a_selector_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_a_selector_wrapper_in_a_started4410);
                    a_selector_wrapper489=a_selector_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, a_selector_wrapper489.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:819:4: a_encode_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_a_encode_wrapper_in_a_started4415);
                    a_encode_wrapper490=a_encode_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, a_encode_wrapper490.getTree());

                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:820:4: a_protocol_wrapper
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_a_protocol_wrapper_in_a_started4420);
                    a_protocol_wrapper491=a_protocol_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, a_protocol_wrapper491.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_started"


    public static class typeof_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typeof"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:823:1: typeof : '__typeof__' L_BR ID R_BR ;
    public final ObjcmParser.typeof_return typeof() throws RecognitionException {
        ObjcmParser.typeof_return retval = new ObjcmParser.typeof_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal492=null;
        Token L_BR493=null;
        Token ID494=null;
        Token R_BR495=null;

        Object string_literal492_tree=null;
        Object L_BR493_tree=null;
        Object ID494_tree=null;
        Object R_BR495_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:823:8: ( '__typeof__' L_BR ID R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:823:10: '__typeof__' L_BR ID R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal492=(Token)match(input,190,FOLLOW_190_in_typeof4430); 
            string_literal492_tree = 
            (Object)adaptor.create(string_literal492)
            ;
            adaptor.addChild(root_0, string_literal492_tree);


            L_BR493=(Token)match(input,L_BR,FOLLOW_L_BR_in_typeof4433); 
            L_BR493_tree = 
            (Object)adaptor.create(L_BR493)
            ;
            adaptor.addChild(root_0, L_BR493_tree);


            ID494=(Token)match(input,ID,FOLLOW_ID_in_typeof4436); 
            ID494_tree = 
            (Object)adaptor.create(ID494)
            ;
            adaptor.addChild(root_0, ID494_tree);


            R_BR495=(Token)match(input,R_BR,FOLLOW_R_BR_in_typeof4439); 
            R_BR495_tree = 
            (Object)adaptor.create(R_BR495)
            ;
            adaptor.addChild(root_0, R_BR495_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typeof"


    public static class a_selector_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_selector_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:825:1: a_selector_wrapper : a_selector -> ^( SELECTOR a_selector ) ;
    public final ObjcmParser.a_selector_wrapper_return a_selector_wrapper() throws RecognitionException {
        ObjcmParser.a_selector_wrapper_return retval = new ObjcmParser.a_selector_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.a_selector_return a_selector496 =null;


        RewriteRuleSubtreeStream stream_a_selector=new RewriteRuleSubtreeStream(adaptor,"rule a_selector");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:826:2: ( a_selector -> ^( SELECTOR a_selector ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:826:4: a_selector
            {
            pushFollow(FOLLOW_a_selector_in_a_selector_wrapper4450);
            a_selector496=a_selector();

            state._fsp--;

            stream_a_selector.add(a_selector496.getTree());

            // AST REWRITE
            // elements: a_selector
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 826:15: -> ^( SELECTOR a_selector )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:826:18: ^( SELECTOR a_selector )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SELECTOR, "SELECTOR")
                , root_1);

                adaptor.addChild(root_1, stream_a_selector.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_selector_wrapper"


    public static class a_selector_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_selector"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:828:1: a_selector : '@selector' L_BR a_selector_value_wrapper R_BR ;
    public final ObjcmParser.a_selector_return a_selector() throws RecognitionException {
        ObjcmParser.a_selector_return retval = new ObjcmParser.a_selector_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal497=null;
        Token L_BR498=null;
        Token R_BR500=null;
        ObjcmParser.a_selector_value_wrapper_return a_selector_value_wrapper499 =null;


        Object string_literal497_tree=null;
        Object L_BR498_tree=null;
        Object R_BR500_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:828:11: ( '@selector' L_BR a_selector_value_wrapper R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:828:13: '@selector' L_BR a_selector_value_wrapper R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal497=(Token)match(input,184,FOLLOW_184_in_a_selector4467); 
            string_literal497_tree = 
            (Object)adaptor.create(string_literal497)
            ;
            adaptor.addChild(root_0, string_literal497_tree);


            L_BR498=(Token)match(input,L_BR,FOLLOW_L_BR_in_a_selector4469); 
            L_BR498_tree = 
            (Object)adaptor.create(L_BR498)
            ;
            adaptor.addChild(root_0, L_BR498_tree);


            pushFollow(FOLLOW_a_selector_value_wrapper_in_a_selector4471);
            a_selector_value_wrapper499=a_selector_value_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, a_selector_value_wrapper499.getTree());

            R_BR500=(Token)match(input,R_BR,FOLLOW_R_BR_in_a_selector4473); 
            R_BR500_tree = 
            (Object)adaptor.create(R_BR500)
            ;
            adaptor.addChild(root_0, R_BR500_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_selector"


    public static class a_protocol_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_protocol_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:830:1: a_protocol_wrapper : a_protocol -> ^( PROTOCOL a_protocol ) ;
    public final ObjcmParser.a_protocol_wrapper_return a_protocol_wrapper() throws RecognitionException {
        ObjcmParser.a_protocol_wrapper_return retval = new ObjcmParser.a_protocol_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.a_protocol_return a_protocol501 =null;


        RewriteRuleSubtreeStream stream_a_protocol=new RewriteRuleSubtreeStream(adaptor,"rule a_protocol");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:831:2: ( a_protocol -> ^( PROTOCOL a_protocol ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:831:4: a_protocol
            {
            pushFollow(FOLLOW_a_protocol_in_a_protocol_wrapper4483);
            a_protocol501=a_protocol();

            state._fsp--;

            stream_a_protocol.add(a_protocol501.getTree());

            // AST REWRITE
            // elements: a_protocol
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 831:15: -> ^( PROTOCOL a_protocol )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:831:18: ^( PROTOCOL a_protocol )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PROTOCOL, "PROTOCOL")
                , root_1);

                adaptor.addChild(root_1, stream_a_protocol.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_protocol_wrapper"


    public static class a_protocol_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_protocol"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:833:1: a_protocol : '@protocol' L_BR a_selector_value_wrapper R_BR ;
    public final ObjcmParser.a_protocol_return a_protocol() throws RecognitionException {
        ObjcmParser.a_protocol_return retval = new ObjcmParser.a_protocol_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal502=null;
        Token L_BR503=null;
        Token R_BR505=null;
        ObjcmParser.a_selector_value_wrapper_return a_selector_value_wrapper504 =null;


        Object string_literal502_tree=null;
        Object L_BR503_tree=null;
        Object R_BR505_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:834:2: ( '@protocol' L_BR a_selector_value_wrapper R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:834:4: '@protocol' L_BR a_selector_value_wrapper R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal502=(Token)match(input,182,FOLLOW_182_in_a_protocol4501); 
            string_literal502_tree = 
            (Object)adaptor.create(string_literal502)
            ;
            adaptor.addChild(root_0, string_literal502_tree);


            L_BR503=(Token)match(input,L_BR,FOLLOW_L_BR_in_a_protocol4503); 
            L_BR503_tree = 
            (Object)adaptor.create(L_BR503)
            ;
            adaptor.addChild(root_0, L_BR503_tree);


            pushFollow(FOLLOW_a_selector_value_wrapper_in_a_protocol4505);
            a_selector_value_wrapper504=a_selector_value_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, a_selector_value_wrapper504.getTree());

            R_BR505=(Token)match(input,R_BR,FOLLOW_R_BR_in_a_protocol4507); 
            R_BR505_tree = 
            (Object)adaptor.create(R_BR505)
            ;
            adaptor.addChild(root_0, R_BR505_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_protocol"


    public static class a_encode_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_encode_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:836:1: a_encode_wrapper : a_encode -> ^( ENCODE a_encode ) ;
    public final ObjcmParser.a_encode_wrapper_return a_encode_wrapper() throws RecognitionException {
        ObjcmParser.a_encode_wrapper_return retval = new ObjcmParser.a_encode_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.a_encode_return a_encode506 =null;


        RewriteRuleSubtreeStream stream_a_encode=new RewriteRuleSubtreeStream(adaptor,"rule a_encode");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:837:2: ( a_encode -> ^( ENCODE a_encode ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:837:4: a_encode
            {
            pushFollow(FOLLOW_a_encode_in_a_encode_wrapper4517);
            a_encode506=a_encode();

            state._fsp--;

            stream_a_encode.add(a_encode506.getTree());

            // AST REWRITE
            // elements: a_encode
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 837:13: -> ^( ENCODE a_encode )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:837:16: ^( ENCODE a_encode )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ENCODE, "ENCODE")
                , root_1);

                adaptor.addChild(root_1, stream_a_encode.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_encode_wrapper"


    public static class a_encode_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_encode"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:839:1: a_encode : '@encode' L_BR a_selector_value_wrapper R_BR ;
    public final ObjcmParser.a_encode_return a_encode() throws RecognitionException {
        ObjcmParser.a_encode_return retval = new ObjcmParser.a_encode_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal507=null;
        Token L_BR508=null;
        Token R_BR510=null;
        ObjcmParser.a_selector_value_wrapper_return a_selector_value_wrapper509 =null;


        Object string_literal507_tree=null;
        Object L_BR508_tree=null;
        Object R_BR510_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:839:9: ( '@encode' L_BR a_selector_value_wrapper R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:839:11: '@encode' L_BR a_selector_value_wrapper R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal507=(Token)match(input,175,FOLLOW_175_in_a_encode4533); 
            string_literal507_tree = 
            (Object)adaptor.create(string_literal507)
            ;
            adaptor.addChild(root_0, string_literal507_tree);


            L_BR508=(Token)match(input,L_BR,FOLLOW_L_BR_in_a_encode4535); 
            L_BR508_tree = 
            (Object)adaptor.create(L_BR508)
            ;
            adaptor.addChild(root_0, L_BR508_tree);


            pushFollow(FOLLOW_a_selector_value_wrapper_in_a_encode4537);
            a_selector_value_wrapper509=a_selector_value_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, a_selector_value_wrapper509.getTree());

            R_BR510=(Token)match(input,R_BR,FOLLOW_R_BR_in_a_encode4539); 
            R_BR510_tree = 
            (Object)adaptor.create(R_BR510)
            ;
            adaptor.addChild(root_0, R_BR510_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_encode"


    public static class a_selector_value_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_selector_value_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:842:1: a_selector_value_wrapper : a_selector_value -> ^( SELECTOR_VALUE a_selector_value ) ;
    public final ObjcmParser.a_selector_value_wrapper_return a_selector_value_wrapper() throws RecognitionException {
        ObjcmParser.a_selector_value_wrapper_return retval = new ObjcmParser.a_selector_value_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.a_selector_value_return a_selector_value511 =null;


        RewriteRuleSubtreeStream stream_a_selector_value=new RewriteRuleSubtreeStream(adaptor,"rule a_selector_value");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:843:2: ( a_selector_value -> ^( SELECTOR_VALUE a_selector_value ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:843:4: a_selector_value
            {
            pushFollow(FOLLOW_a_selector_value_in_a_selector_value_wrapper4550);
            a_selector_value511=a_selector_value();

            state._fsp--;

            stream_a_selector_value.add(a_selector_value511.getTree());

            // AST REWRITE
            // elements: a_selector_value
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 843:21: -> ^( SELECTOR_VALUE a_selector_value )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:843:24: ^( SELECTOR_VALUE a_selector_value )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SELECTOR_VALUE, "SELECTOR_VALUE")
                , root_1);

                adaptor.addChild(root_1, stream_a_selector_value.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_selector_value_wrapper"


    public static class a_selector_value_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "a_selector_value"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:845:1: a_selector_value : sel_id ( COLON ( sel_id COLON )* )? ;
    public final ObjcmParser.a_selector_value_return a_selector_value() throws RecognitionException {
        ObjcmParser.a_selector_value_return retval = new ObjcmParser.a_selector_value_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON513=null;
        Token COLON515=null;
        ObjcmParser.sel_id_return sel_id512 =null;

        ObjcmParser.sel_id_return sel_id514 =null;


        Object COLON513_tree=null;
        Object COLON515_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:2: ( sel_id ( COLON ( sel_id COLON )* )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:5: sel_id ( COLON ( sel_id COLON )* )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_sel_id_in_a_selector_value4569);
            sel_id512=sel_id();

            state._fsp--;

            adaptor.addChild(root_0, sel_id512.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:13: ( COLON ( sel_id COLON )* )?
            int alt128=2;
            int LA128_0 = input.LA(1);

            if ( (LA128_0==COLON) ) {
                alt128=1;
            }
            switch (alt128) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:14: COLON ( sel_id COLON )*
                    {
                    COLON513=(Token)match(input,COLON,FOLLOW_COLON_in_a_selector_value4573); 
                    COLON513_tree = 
                    (Object)adaptor.create(COLON513)
                    ;
                    adaptor.addChild(root_0, COLON513_tree);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:21: ( sel_id COLON )*
                    loop127:
                    do {
                        int alt127=2;
                        int LA127_0 = input.LA(1);

                        if ( (LA127_0==ID||LA127_0==191||LA127_0==194||LA127_0==205) ) {
                            alt127=1;
                        }


                        switch (alt127) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:846:22: sel_id COLON
                    	    {
                    	    pushFollow(FOLLOW_sel_id_in_a_selector_value4577);
                    	    sel_id514=sel_id();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, sel_id514.getTree());

                    	    COLON515=(Token)match(input,COLON,FOLLOW_COLON_in_a_selector_value4580); 
                    	    COLON515_tree = 
                    	    (Object)adaptor.create(COLON515)
                    	    ;
                    	    adaptor.addChild(root_0, COLON515_tree);


                    	    }
                    	    break;

                    	default :
                    	    break loop127;
                        }
                    } while (true);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "a_selector_value"


    public static class sel_id_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "sel_id"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:848:1: sel_id : ( ID | property );
    public final ObjcmParser.sel_id_return sel_id() throws RecognitionException {
        ObjcmParser.sel_id_return retval = new ObjcmParser.sel_id_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID516=null;
        ObjcmParser.property_return property517 =null;


        Object ID516_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:848:8: ( ID | property )
            int alt129=2;
            int LA129_0 = input.LA(1);

            if ( (LA129_0==ID) ) {
                alt129=1;
            }
            else if ( (LA129_0==191||LA129_0==194||LA129_0==205) ) {
                alt129=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 129, 0, input);

                throw nvae;

            }
            switch (alt129) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:848:10: ID
                    {
                    root_0 = (Object)adaptor.nil();


                    ID516=(Token)match(input,ID,FOLLOW_ID_in_sel_id4593); 
                    ID516_tree = 
                    (Object)adaptor.create(ID516)
                    ;
                    adaptor.addChild(root_0, ID516_tree);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:849:4: property
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_property_in_sel_id4598);
                    property517=property();

                    state._fsp--;

                    adaptor.addChild(root_0, property517.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "sel_id"


    public static class const_expr_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "const_expr_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:852:1: const_expr_wrapper : const_expr -> ^( CONST_EXPR const_expr ) ;
    public final ObjcmParser.const_expr_wrapper_return const_expr_wrapper() throws RecognitionException {
        ObjcmParser.const_expr_wrapper_return retval = new ObjcmParser.const_expr_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.const_expr_return const_expr518 =null;


        RewriteRuleSubtreeStream stream_const_expr=new RewriteRuleSubtreeStream(adaptor,"rule const_expr");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:853:2: ( const_expr -> ^( CONST_EXPR const_expr ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:853:4: const_expr
            {
            pushFollow(FOLLOW_const_expr_in_const_expr_wrapper4610);
            const_expr518=const_expr();

            state._fsp--;

            stream_const_expr.add(const_expr518.getTree());

            // AST REWRITE
            // elements: const_expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 853:15: -> ^( CONST_EXPR const_expr )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:853:18: ^( CONST_EXPR const_expr )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CONST_EXPR, "CONST_EXPR")
                , root_1);

                adaptor.addChild(root_1, stream_const_expr.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "const_expr_wrapper"


    public static class const_expr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "const_expr"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:855:1: const_expr : ( NUMBER | STRING_LITERAL | STRING_LITERAL2 | STRING_LITERAL3 | null_stmt );
    public final ObjcmParser.const_expr_return const_expr() throws RecognitionException {
        ObjcmParser.const_expr_return retval = new ObjcmParser.const_expr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token NUMBER519=null;
        Token STRING_LITERAL520=null;
        Token STRING_LITERAL2521=null;
        Token STRING_LITERAL3522=null;
        ObjcmParser.null_stmt_return null_stmt523 =null;


        Object NUMBER519_tree=null;
        Object STRING_LITERAL520_tree=null;
        Object STRING_LITERAL2521_tree=null;
        Object STRING_LITERAL3522_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:2: ( NUMBER | STRING_LITERAL | STRING_LITERAL2 | STRING_LITERAL3 | null_stmt )
            int alt130=5;
            switch ( input.LA(1) ) {
            case NUMBER:
                {
                alt130=1;
                }
                break;
            case STRING_LITERAL:
                {
                alt130=2;
                }
                break;
            case STRING_LITERAL2:
                {
                alt130=3;
                }
                break;
            case STRING_LITERAL3:
                {
                alt130=4;
                }
                break;
            case 188:
            case 204:
                {
                alt130=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 130, 0, input);

                throw nvae;

            }

            switch (alt130) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:5: NUMBER
                    {
                    root_0 = (Object)adaptor.nil();


                    NUMBER519=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_const_expr4629); 
                    NUMBER519_tree = 
                    (Object)adaptor.create(NUMBER519)
                    ;
                    adaptor.addChild(root_0, NUMBER519_tree);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:14: STRING_LITERAL
                    {
                    root_0 = (Object)adaptor.nil();


                    STRING_LITERAL520=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_const_expr4633); 
                    STRING_LITERAL520_tree = 
                    (Object)adaptor.create(STRING_LITERAL520)
                    ;
                    adaptor.addChild(root_0, STRING_LITERAL520_tree);


                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:31: STRING_LITERAL2
                    {
                    root_0 = (Object)adaptor.nil();


                    STRING_LITERAL2521=(Token)match(input,STRING_LITERAL2,FOLLOW_STRING_LITERAL2_in_const_expr4637); 
                    STRING_LITERAL2521_tree = 
                    (Object)adaptor.create(STRING_LITERAL2521)
                    ;
                    adaptor.addChild(root_0, STRING_LITERAL2521_tree);


                    }
                    break;
                case 4 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:49: STRING_LITERAL3
                    {
                    root_0 = (Object)adaptor.nil();


                    STRING_LITERAL3522=(Token)match(input,STRING_LITERAL3,FOLLOW_STRING_LITERAL3_in_const_expr4641); 
                    STRING_LITERAL3522_tree = 
                    (Object)adaptor.create(STRING_LITERAL3522)
                    ;
                    adaptor.addChild(root_0, STRING_LITERAL3522_tree);


                    }
                    break;
                case 5 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:856:67: null_stmt
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_null_stmt_in_const_expr4645);
                    null_stmt523=null_stmt();

                    state._fsp--;

                    adaptor.addChild(root_0, null_stmt523.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "const_expr"


    public static class string_literal3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "string_literal3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:858:1: string_literal3 : STRING_LITERAL3 ;
    public final ObjcmParser.string_literal3_return string_literal3() throws RecognitionException {
        ObjcmParser.string_literal3_return retval = new ObjcmParser.string_literal3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STRING_LITERAL3524=null;

        Object STRING_LITERAL3524_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:859:2: ( STRING_LITERAL3 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:859:4: STRING_LITERAL3
            {
            root_0 = (Object)adaptor.nil();


            STRING_LITERAL3524=(Token)match(input,STRING_LITERAL3,FOLLOW_STRING_LITERAL3_in_string_literal34655); 
            STRING_LITERAL3524_tree = 
            (Object)adaptor.create(STRING_LITERAL3524)
            ;
            adaptor.addChild(root_0, STRING_LITERAL3524_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "string_literal3"


    public static class method_brackets_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_brackets"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:861:1: method_brackets : L_BR ( expression ( COMMA classical_expr_wrp )* )? R_BR ;
    public final ObjcmParser.method_brackets_return method_brackets() throws RecognitionException {
        ObjcmParser.method_brackets_return retval = new ObjcmParser.method_brackets_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR525=null;
        Token COMMA527=null;
        Token R_BR529=null;
        ObjcmParser.expression_return expression526 =null;

        ObjcmParser.classical_expr_wrp_return classical_expr_wrp528 =null;


        Object L_BR525_tree=null;
        Object COMMA527_tree=null;
        Object R_BR529_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:2: ( L_BR ( expression ( COMMA classical_expr_wrp )* )? R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:4: L_BR ( expression ( COMMA classical_expr_wrp )* )? R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR525=(Token)match(input,L_BR,FOLLOW_L_BR_in_method_brackets4665); 
            L_BR525_tree = 
            (Object)adaptor.create(L_BR525)
            ;
            adaptor.addChild(root_0, L_BR525_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:10: ( expression ( COMMA classical_expr_wrp )* )?
            int alt132=2;
            int LA132_0 = input.LA(1);

            if ( (LA132_0==ASTERISK||LA132_0==ID||LA132_0==L_AND||LA132_0==L_BR||LA132_0==L_KBR||LA132_0==L_MINUS||LA132_0==L_MINUS_MINUS||LA132_0==L_NOT||LA132_0==L_PLUS||LA132_0==L_PLUS_PLUS||LA132_0==L_TILDA||LA132_0==NUMBER||LA132_0==SIZEOF||(LA132_0 >= STRING_LITERAL && LA132_0 <= STRING_LITERAL3)||LA132_0==175||LA132_0==182||LA132_0==184||LA132_0==188||LA132_0==191||LA132_0==194||LA132_0==202||(LA132_0 >= 204 && LA132_0 <= 205)||LA132_0==210) ) {
                alt132=1;
            }
            switch (alt132) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:11: expression ( COMMA classical_expr_wrp )*
                    {
                    pushFollow(FOLLOW_expression_in_method_brackets4669);
                    expression526=expression();

                    state._fsp--;

                    adaptor.addChild(root_0, expression526.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:23: ( COMMA classical_expr_wrp )*
                    loop131:
                    do {
                        int alt131=2;
                        int LA131_0 = input.LA(1);

                        if ( (LA131_0==COMMA) ) {
                            alt131=1;
                        }


                        switch (alt131) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:862:24: COMMA classical_expr_wrp
                    	    {
                    	    COMMA527=(Token)match(input,COMMA,FOLLOW_COMMA_in_method_brackets4673); 
                    	    COMMA527_tree = 
                    	    (Object)adaptor.create(COMMA527)
                    	    ;
                    	    adaptor.addChild(root_0, COMMA527_tree);


                    	    pushFollow(FOLLOW_classical_expr_wrp_in_method_brackets4676);
                    	    classical_expr_wrp528=classical_expr_wrp();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, classical_expr_wrp528.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop131;
                        }
                    } while (true);


                    }
                    break;

            }


            R_BR529=(Token)match(input,R_BR,FOLLOW_R_BR_in_method_brackets4682); 
            R_BR529_tree = 
            (Object)adaptor.create(R_BR529)
            ;
            adaptor.addChild(root_0, R_BR529_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_brackets"


    public static class func_pointer1_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "func_pointer1"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:864:1: func_pointer1 : type_internal ( ASTERISK )? L_BR ( ASTERISK )? type_internal R_BR ( func_pointer_params )? ;
    public final ObjcmParser.func_pointer1_return func_pointer1() throws RecognitionException {
        ObjcmParser.func_pointer1_return retval = new ObjcmParser.func_pointer1_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ASTERISK531=null;
        Token L_BR532=null;
        Token ASTERISK533=null;
        Token R_BR535=null;
        ObjcmParser.type_internal_return type_internal530 =null;

        ObjcmParser.type_internal_return type_internal534 =null;

        ObjcmParser.func_pointer_params_return func_pointer_params536 =null;


        Object ASTERISK531_tree=null;
        Object L_BR532_tree=null;
        Object ASTERISK533_tree=null;
        Object R_BR535_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:2: ( type_internal ( ASTERISK )? L_BR ( ASTERISK )? type_internal R_BR ( func_pointer_params )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:4: type_internal ( ASTERISK )? L_BR ( ASTERISK )? type_internal R_BR ( func_pointer_params )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_type_internal_in_func_pointer14692);
            type_internal530=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal530.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:19: ( ASTERISK )?
            int alt133=2;
            int LA133_0 = input.LA(1);

            if ( (LA133_0==ASTERISK) ) {
                alt133=1;
            }
            switch (alt133) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:19: ASTERISK
                    {
                    ASTERISK531=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_func_pointer14695); 
                    ASTERISK531_tree = 
                    (Object)adaptor.create(ASTERISK531)
                    ;
                    adaptor.addChild(root_0, ASTERISK531_tree);


                    }
                    break;

            }


            L_BR532=(Token)match(input,L_BR,FOLLOW_L_BR_in_func_pointer14698); 
            L_BR532_tree = 
            (Object)adaptor.create(L_BR532)
            ;
            adaptor.addChild(root_0, L_BR532_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:34: ( ASTERISK )?
            int alt134=2;
            int LA134_0 = input.LA(1);

            if ( (LA134_0==ASTERISK) ) {
                alt134=1;
            }
            switch (alt134) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:34: ASTERISK
                    {
                    ASTERISK533=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_func_pointer14700); 
                    ASTERISK533_tree = 
                    (Object)adaptor.create(ASTERISK533)
                    ;
                    adaptor.addChild(root_0, ASTERISK533_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_type_internal_in_func_pointer14703);
            type_internal534=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal534.getTree());

            R_BR535=(Token)match(input,R_BR,FOLLOW_R_BR_in_func_pointer14706); 
            R_BR535_tree = 
            (Object)adaptor.create(R_BR535)
            ;
            adaptor.addChild(root_0, R_BR535_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:65: ( func_pointer_params )?
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( (LA135_0==L_BR) ) {
                alt135=1;
            }
            switch (alt135) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:865:65: func_pointer_params
                    {
                    pushFollow(FOLLOW_func_pointer_params_in_func_pointer14709);
                    func_pointer_params536=func_pointer_params();

                    state._fsp--;

                    adaptor.addChild(root_0, func_pointer_params536.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "func_pointer1"


    public static class func_pointer2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "func_pointer2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:868:1: func_pointer2 : L_BR type_internal L_BR ASTERISK R_BR func_pointer_params R_BR ;
    public final ObjcmParser.func_pointer2_return func_pointer2() throws RecognitionException {
        ObjcmParser.func_pointer2_return retval = new ObjcmParser.func_pointer2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR537=null;
        Token L_BR539=null;
        Token ASTERISK540=null;
        Token R_BR541=null;
        Token R_BR543=null;
        ObjcmParser.type_internal_return type_internal538 =null;

        ObjcmParser.func_pointer_params_return func_pointer_params542 =null;


        Object L_BR537_tree=null;
        Object L_BR539_tree=null;
        Object ASTERISK540_tree=null;
        Object R_BR541_tree=null;
        Object R_BR543_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:869:2: ( L_BR type_internal L_BR ASTERISK R_BR func_pointer_params R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:869:4: L_BR type_internal L_BR ASTERISK R_BR func_pointer_params R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR537=(Token)match(input,L_BR,FOLLOW_L_BR_in_func_pointer24722); 
            L_BR537_tree = 
            (Object)adaptor.create(L_BR537)
            ;
            adaptor.addChild(root_0, L_BR537_tree);


            pushFollow(FOLLOW_type_internal_in_func_pointer24725);
            type_internal538=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal538.getTree());

            L_BR539=(Token)match(input,L_BR,FOLLOW_L_BR_in_func_pointer24727); 
            L_BR539_tree = 
            (Object)adaptor.create(L_BR539)
            ;
            adaptor.addChild(root_0, L_BR539_tree);


            ASTERISK540=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_func_pointer24730); 
            ASTERISK540_tree = 
            (Object)adaptor.create(ASTERISK540)
            ;
            adaptor.addChild(root_0, ASTERISK540_tree);


            R_BR541=(Token)match(input,R_BR,FOLLOW_R_BR_in_func_pointer24733); 
            R_BR541_tree = 
            (Object)adaptor.create(R_BR541)
            ;
            adaptor.addChild(root_0, R_BR541_tree);


            pushFollow(FOLLOW_func_pointer_params_in_func_pointer24736);
            func_pointer_params542=func_pointer_params();

            state._fsp--;

            adaptor.addChild(root_0, func_pointer_params542.getTree());

            R_BR543=(Token)match(input,R_BR,FOLLOW_R_BR_in_func_pointer24739); 
            R_BR543_tree = 
            (Object)adaptor.create(R_BR543)
            ;
            adaptor.addChild(root_0, R_BR543_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "func_pointer2"


    public static class func_pointer_params_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "func_pointer_params"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:872:1: func_pointer_params : L_BR ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )* R_BR ;
    public final ObjcmParser.func_pointer_params_return func_pointer_params() throws RecognitionException {
        ObjcmParser.func_pointer_params_return retval = new ObjcmParser.func_pointer_params_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR544=null;
        Token ID545=null;
        Token ASTERISK546=null;
        Token COMMA547=null;
        Token ID548=null;
        Token ASTERISK549=null;
        Token R_BR550=null;

        Object L_BR544_tree=null;
        Object ID545_tree=null;
        Object ASTERISK546_tree=null;
        Object COMMA547_tree=null;
        Object ID548_tree=null;
        Object ASTERISK549_tree=null;
        Object R_BR550_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:2: ( L_BR ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )* R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:4: L_BR ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )* R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR544=(Token)match(input,L_BR,FOLLOW_L_BR_in_func_pointer_params4752); 
            L_BR544_tree = 
            (Object)adaptor.create(L_BR544)
            ;
            adaptor.addChild(root_0, L_BR544_tree);


            ID545=(Token)match(input,ID,FOLLOW_ID_in_func_pointer_params4755); 
            ID545_tree = 
            (Object)adaptor.create(ID545)
            ;
            adaptor.addChild(root_0, ID545_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:14: ( ASTERISK )*
            loop136:
            do {
                int alt136=2;
                int LA136_0 = input.LA(1);

                if ( (LA136_0==ASTERISK) ) {
                    alt136=1;
                }


                switch (alt136) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:14: ASTERISK
            	    {
            	    ASTERISK546=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_func_pointer_params4758); 
            	    ASTERISK546_tree = 
            	    (Object)adaptor.create(ASTERISK546)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK546_tree);


            	    }
            	    break;

            	default :
            	    break loop136;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:24: ( COMMA ID ( ASTERISK )* )*
            loop138:
            do {
                int alt138=2;
                int LA138_0 = input.LA(1);

                if ( (LA138_0==COMMA) ) {
                    alt138=1;
                }


                switch (alt138) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:25: COMMA ID ( ASTERISK )*
            	    {
            	    COMMA547=(Token)match(input,COMMA,FOLLOW_COMMA_in_func_pointer_params4762); 
            	    COMMA547_tree = 
            	    (Object)adaptor.create(COMMA547)
            	    ;
            	    adaptor.addChild(root_0, COMMA547_tree);


            	    ID548=(Token)match(input,ID,FOLLOW_ID_in_func_pointer_params4765); 
            	    ID548_tree = 
            	    (Object)adaptor.create(ID548)
            	    ;
            	    adaptor.addChild(root_0, ID548_tree);


            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:36: ( ASTERISK )*
            	    loop137:
            	    do {
            	        int alt137=2;
            	        int LA137_0 = input.LA(1);

            	        if ( (LA137_0==ASTERISK) ) {
            	            alt137=1;
            	        }


            	        switch (alt137) {
            	    	case 1 :
            	    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:873:36: ASTERISK
            	    	    {
            	    	    ASTERISK549=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_func_pointer_params4768); 
            	    	    ASTERISK549_tree = 
            	    	    (Object)adaptor.create(ASTERISK549)
            	    	    ;
            	    	    adaptor.addChild(root_0, ASTERISK549_tree);


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop137;
            	        }
            	    } while (true);


            	    }
            	    break;

            	default :
            	    break loop138;
                }
            } while (true);


            R_BR550=(Token)match(input,R_BR,FOLLOW_R_BR_in_func_pointer_params4773); 
            R_BR550_tree = 
            (Object)adaptor.create(R_BR550)
            ;
            adaptor.addChild(root_0, R_BR550_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "func_pointer_params"


    public static class method_start_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_start"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:875:1: method_start : ID ( method_brackets )? ;
    public final ObjcmParser.method_start_return method_start() throws RecognitionException {
        ObjcmParser.method_start_return retval = new ObjcmParser.method_start_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID551=null;
        ObjcmParser.method_brackets_return method_brackets552 =null;


        Object ID551_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:876:2: ( ID ( method_brackets )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:876:4: ID ( method_brackets )?
            {
            root_0 = (Object)adaptor.nil();


            ID551=(Token)match(input,ID,FOLLOW_ID_in_method_start4784); 
            ID551_tree = 
            (Object)adaptor.create(ID551)
            ;
            adaptor.addChild(root_0, ID551_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:876:7: ( method_brackets )?
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==L_BR) ) {
                alt139=1;
            }
            switch (alt139) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:876:7: method_brackets
                    {
                    pushFollow(FOLLOW_method_brackets_in_method_start4786);
                    method_brackets552=method_brackets();

                    state._fsp--;

                    adaptor.addChild(root_0, method_brackets552.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_start"


    public static class in_q_brackets_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "in_q_brackets"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:878:1: in_q_brackets : L_FBR q_brackets_source R_FBR ;
    public final ObjcmParser.in_q_brackets_return in_q_brackets() throws RecognitionException {
        ObjcmParser.in_q_brackets_return retval = new ObjcmParser.in_q_brackets_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR553=null;
        Token R_FBR555=null;
        ObjcmParser.q_brackets_source_return q_brackets_source554 =null;


        Object L_FBR553_tree=null;
        Object R_FBR555_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:879:2: ( L_FBR q_brackets_source R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:879:4: L_FBR q_brackets_source R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR553=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_in_q_brackets4797); 
            L_FBR553_tree = 
            (Object)adaptor.create(L_FBR553)
            ;
            adaptor.addChild(root_0, L_FBR553_tree);


            pushFollow(FOLLOW_q_brackets_source_in_in_q_brackets4800);
            q_brackets_source554=q_brackets_source();

            state._fsp--;

            adaptor.addChild(root_0, q_brackets_source554.getTree());

            R_FBR555=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_in_q_brackets4802); 
            R_FBR555_tree = 
            (Object)adaptor.create(R_FBR555)
            ;
            adaptor.addChild(root_0, R_FBR555_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "in_q_brackets"


    public static class q_brackets_source_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "q_brackets_source"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:882:1: q_brackets_source : ( q_source | q_br_source );
    public final ObjcmParser.q_brackets_source_return q_brackets_source() throws RecognitionException {
        ObjcmParser.q_brackets_source_return retval = new ObjcmParser.q_brackets_source_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.q_source_return q_source556 =null;

        ObjcmParser.q_br_source_return q_br_source557 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:883:2: ( q_source | q_br_source )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==ASTERISK||LA140_0==ID||LA140_0==L_AND||LA140_0==L_BR||LA140_0==L_KBR||LA140_0==L_MINUS||LA140_0==L_MINUS_MINUS||LA140_0==L_NOT||LA140_0==L_PLUS||LA140_0==L_PLUS_PLUS||LA140_0==L_TILDA||LA140_0==NUMBER||LA140_0==R_FBR||LA140_0==SIZEOF||(LA140_0 >= STRING_LITERAL && LA140_0 <= STRING_LITERAL3)||LA140_0==175||LA140_0==182||LA140_0==184||LA140_0==188||LA140_0==191||LA140_0==194||LA140_0==202||(LA140_0 >= 204 && LA140_0 <= 205)||LA140_0==210) ) {
                alt140=1;
            }
            else if ( (LA140_0==L_FBR) ) {
                alt140=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;

            }
            switch (alt140) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:883:4: q_source
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_q_source_in_q_brackets_source4814);
                    q_source556=q_source();

                    state._fsp--;

                    adaptor.addChild(root_0, q_source556.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:884:4: q_br_source
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_q_br_source_in_q_brackets_source4819);
                    q_br_source557=q_br_source();

                    state._fsp--;

                    adaptor.addChild(root_0, q_br_source557.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "q_brackets_source"


    public static class q_br_source_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "q_br_source"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:887:1: q_br_source : in_q_brackets ( COMMA in_q_brackets )* ( COMMA )? ;
    public final ObjcmParser.q_br_source_return q_br_source() throws RecognitionException {
        ObjcmParser.q_br_source_return retval = new ObjcmParser.q_br_source_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA559=null;
        Token COMMA561=null;
        ObjcmParser.in_q_brackets_return in_q_brackets558 =null;

        ObjcmParser.in_q_brackets_return in_q_brackets560 =null;


        Object COMMA559_tree=null;
        Object COMMA561_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:2: ( in_q_brackets ( COMMA in_q_brackets )* ( COMMA )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:4: in_q_brackets ( COMMA in_q_brackets )* ( COMMA )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_in_q_brackets_in_q_br_source4832);
            in_q_brackets558=in_q_brackets();

            state._fsp--;

            adaptor.addChild(root_0, in_q_brackets558.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:19: ( COMMA in_q_brackets )*
            loop141:
            do {
                int alt141=2;
                int LA141_0 = input.LA(1);

                if ( (LA141_0==COMMA) ) {
                    int LA141_1 = input.LA(2);

                    if ( (LA141_1==L_FBR) ) {
                        alt141=1;
                    }


                }


                switch (alt141) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:20: COMMA in_q_brackets
            	    {
            	    COMMA559=(Token)match(input,COMMA,FOLLOW_COMMA_in_q_br_source4836); 
            	    COMMA559_tree = 
            	    (Object)adaptor.create(COMMA559)
            	    ;
            	    adaptor.addChild(root_0, COMMA559_tree);


            	    pushFollow(FOLLOW_in_q_brackets_in_q_br_source4839);
            	    in_q_brackets560=in_q_brackets();

            	    state._fsp--;

            	    adaptor.addChild(root_0, in_q_brackets560.getTree());

            	    }
            	    break;

            	default :
            	    break loop141;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:43: ( COMMA )?
            int alt142=2;
            int LA142_0 = input.LA(1);

            if ( (LA142_0==COMMA) ) {
                alt142=1;
            }
            switch (alt142) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:888:43: COMMA
                    {
                    COMMA561=(Token)match(input,COMMA,FOLLOW_COMMA_in_q_br_source4843); 
                    COMMA561_tree = 
                    (Object)adaptor.create(COMMA561)
                    ;
                    adaptor.addChild(root_0, COMMA561_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "q_br_source"


    public static class q_source_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "q_source"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:1: q_source : ( expression ( COMMA expression )* )? ;
    public final ObjcmParser.q_source_return q_source() throws RecognitionException {
        ObjcmParser.q_source_return retval = new ObjcmParser.q_source_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA563=null;
        ObjcmParser.expression_return expression562 =null;

        ObjcmParser.expression_return expression564 =null;


        Object COMMA563_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:9: ( ( expression ( COMMA expression )* )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:11: ( expression ( COMMA expression )* )?
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:11: ( expression ( COMMA expression )* )?
            int alt144=2;
            int LA144_0 = input.LA(1);

            if ( (LA144_0==ASTERISK||LA144_0==ID||LA144_0==L_AND||LA144_0==L_BR||LA144_0==L_KBR||LA144_0==L_MINUS||LA144_0==L_MINUS_MINUS||LA144_0==L_NOT||LA144_0==L_PLUS||LA144_0==L_PLUS_PLUS||LA144_0==L_TILDA||LA144_0==NUMBER||LA144_0==SIZEOF||(LA144_0 >= STRING_LITERAL && LA144_0 <= STRING_LITERAL3)||LA144_0==175||LA144_0==182||LA144_0==184||LA144_0==188||LA144_0==191||LA144_0==194||LA144_0==202||(LA144_0 >= 204 && LA144_0 <= 205)||LA144_0==210) ) {
                alt144=1;
            }
            switch (alt144) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:12: expression ( COMMA expression )*
                    {
                    pushFollow(FOLLOW_expression_in_q_source4855);
                    expression562=expression();

                    state._fsp--;

                    adaptor.addChild(root_0, expression562.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:24: ( COMMA expression )*
                    loop143:
                    do {
                        int alt143=2;
                        int LA143_0 = input.LA(1);

                        if ( (LA143_0==COMMA) ) {
                            alt143=1;
                        }


                        switch (alt143) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:891:25: COMMA expression
                    	    {
                    	    COMMA563=(Token)match(input,COMMA,FOLLOW_COMMA_in_q_source4859); 
                    	    COMMA563_tree = 
                    	    (Object)adaptor.create(COMMA563)
                    	    ;
                    	    adaptor.addChild(root_0, COMMA563_tree);


                    	    pushFollow(FOLLOW_expression_in_q_source4862);
                    	    expression564=expression();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, expression564.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop143;
                        }
                    } while (true);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "q_source"


    public static class simple_method_call_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "simple_method_call"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:894:1: simple_method_call : ID ( method_brackets )? ;
    public final ObjcmParser.simple_method_call_return simple_method_call() throws RecognitionException {
        ObjcmParser.simple_method_call_return retval = new ObjcmParser.simple_method_call_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID565=null;
        ObjcmParser.method_brackets_return method_brackets566 =null;


        Object ID565_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:895:2: ( ID ( method_brackets )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:895:4: ID ( method_brackets )?
            {
            root_0 = (Object)adaptor.nil();


            ID565=(Token)match(input,ID,FOLLOW_ID_in_simple_method_call4879); 
            ID565_tree = 
            (Object)adaptor.create(ID565)
            ;
            adaptor.addChild(root_0, ID565_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:895:7: ( method_brackets )?
            int alt145=2;
            int LA145_0 = input.LA(1);

            if ( (LA145_0==L_BR) ) {
                alt145=1;
            }
            switch (alt145) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:895:7: method_brackets
                    {
                    pushFollow(FOLLOW_method_brackets_in_simple_method_call4881);
                    method_brackets566=method_brackets();

                    state._fsp--;

                    adaptor.addChild(root_0, method_brackets566.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "simple_method_call"


    public static class index_brackets_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "index_brackets"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:897:1: index_brackets : L_KBR classical_expr_wrp R_KBR ;
    public final ObjcmParser.index_brackets_return index_brackets() throws RecognitionException {
        ObjcmParser.index_brackets_return retval = new ObjcmParser.index_brackets_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_KBR567=null;
        Token R_KBR569=null;
        ObjcmParser.classical_expr_wrp_return classical_expr_wrp568 =null;


        Object L_KBR567_tree=null;
        Object R_KBR569_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:898:2: ( L_KBR classical_expr_wrp R_KBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:898:4: L_KBR classical_expr_wrp R_KBR
            {
            root_0 = (Object)adaptor.nil();


            L_KBR567=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_index_brackets4897); 
            L_KBR567_tree = 
            (Object)adaptor.create(L_KBR567)
            ;
            adaptor.addChild(root_0, L_KBR567_tree);


            pushFollow(FOLLOW_classical_expr_wrp_in_index_brackets4900);
            classical_expr_wrp568=classical_expr_wrp();

            state._fsp--;

            adaptor.addChild(root_0, classical_expr_wrp568.getTree());

            R_KBR569=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_index_brackets4902); 
            R_KBR569_tree = 
            (Object)adaptor.create(R_KBR569)
            ;
            adaptor.addChild(root_0, R_KBR569_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "index_brackets"


    public static class interface_declaration_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_declaration_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:905:1: interface_declaration_wrapper : interface_declaration -> ^( INTERFACE interface_declaration ) ;
    public final ObjcmParser.interface_declaration_wrapper_return interface_declaration_wrapper() throws RecognitionException {
        ObjcmParser.interface_declaration_wrapper_return retval = new ObjcmParser.interface_declaration_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.interface_declaration_return interface_declaration570 =null;


        RewriteRuleSubtreeStream stream_interface_declaration=new RewriteRuleSubtreeStream(adaptor,"rule interface_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:906:2: ( interface_declaration -> ^( INTERFACE interface_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:906:4: interface_declaration
            {
            pushFollow(FOLLOW_interface_declaration_in_interface_declaration_wrapper4916);
            interface_declaration570=interface_declaration();

            state._fsp--;

            stream_interface_declaration.add(interface_declaration570.getTree());

            // AST REWRITE
            // elements: interface_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 906:26: -> ^( INTERFACE interface_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:906:29: ^( INTERFACE interface_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(INTERFACE, "INTERFACE")
                , root_1);

                adaptor.addChild(root_1, stream_interface_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_declaration_wrapper"


    public static class interface_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:908:1: interface_declaration : '@interface' name ( interface_category )? ( super_class )? ( annotated_block | interface_methods | interface_fields )* '@end' ;
    public final ObjcmParser.interface_declaration_return interface_declaration() throws RecognitionException {
        ObjcmParser.interface_declaration_return retval = new ObjcmParser.interface_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal571=null;
        Token string_literal578=null;
        ObjcmParser.name_return name572 =null;

        ObjcmParser.interface_category_return interface_category573 =null;

        ObjcmParser.super_class_return super_class574 =null;

        ObjcmParser.annotated_block_return annotated_block575 =null;

        ObjcmParser.interface_methods_return interface_methods576 =null;

        ObjcmParser.interface_fields_return interface_fields577 =null;


        Object string_literal571_tree=null;
        Object string_literal578_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:2: ( '@interface' name ( interface_category )? ( super_class )? ( annotated_block | interface_methods | interface_fields )* '@end' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:4: '@interface' name ( interface_category )? ( super_class )? ( annotated_block | interface_methods | interface_fields )* '@end'
            {
            root_0 = (Object)adaptor.nil();


            string_literal571=(Token)match(input,179,FOLLOW_179_in_interface_declaration4934); 
            string_literal571_tree = 
            (Object)adaptor.create(string_literal571)
            ;
            adaptor.addChild(root_0, string_literal571_tree);


            pushFollow(FOLLOW_name_in_interface_declaration4937);
            name572=name();

            state._fsp--;

            adaptor.addChild(root_0, name572.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:24: ( interface_category )?
            int alt146=2;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==L_BR) ) {
                alt146=1;
            }
            switch (alt146) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:24: interface_category
                    {
                    pushFollow(FOLLOW_interface_category_in_interface_declaration4940);
                    interface_category573=interface_category();

                    state._fsp--;

                    adaptor.addChild(root_0, interface_category573.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:44: ( super_class )?
            int alt147=2;
            int LA147_0 = input.LA(1);

            if ( (LA147_0==COLON) ) {
                alt147=1;
            }
            switch (alt147) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:909:45: super_class
                    {
                    pushFollow(FOLLOW_super_class_in_interface_declaration4944);
                    super_class574=super_class();

                    state._fsp--;

                    adaptor.addChild(root_0, super_class574.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:910:3: ( annotated_block | interface_methods | interface_fields )*
            loop148:
            do {
                int alt148=4;
                switch ( input.LA(1) ) {
                case L_FBR:
                    {
                    alt148=1;
                    }
                    break;
                case ENUM_PREFIX:
                case L_MINUS:
                case L_PLUS:
                    {
                    alt148=2;
                    }
                    break;
                case ID:
                case VOID:
                case 181:
                case 210:
                    {
                    alt148=3;
                    }
                    break;

                }

                switch (alt148) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:910:4: annotated_block
            	    {
            	    pushFollow(FOLLOW_annotated_block_in_interface_declaration4951);
            	    annotated_block575=annotated_block();

            	    state._fsp--;

            	    adaptor.addChild(root_0, annotated_block575.getTree());

            	    }
            	    break;
            	case 2 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:910:22: interface_methods
            	    {
            	    pushFollow(FOLLOW_interface_methods_in_interface_declaration4955);
            	    interface_methods576=interface_methods();

            	    state._fsp--;

            	    adaptor.addChild(root_0, interface_methods576.getTree());

            	    }
            	    break;
            	case 3 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:910:42: interface_fields
            	    {
            	    pushFollow(FOLLOW_interface_fields_in_interface_declaration4959);
            	    interface_fields577=interface_fields();

            	    state._fsp--;

            	    adaptor.addChild(root_0, interface_fields577.getTree());

            	    }
            	    break;

            	default :
            	    break loop148;
                }
            } while (true);


            string_literal578=(Token)match(input,176,FOLLOW_176_in_interface_declaration4968); 
            string_literal578_tree = 
            (Object)adaptor.create(string_literal578)
            ;
            adaptor.addChild(root_0, string_literal578_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_declaration"


    public static class annotated_block_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "annotated_block"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:914:1: annotated_block : L_FBR ( annotated_block_internal )* R_FBR ;
    public final ObjcmParser.annotated_block_return annotated_block() throws RecognitionException {
        ObjcmParser.annotated_block_return retval = new ObjcmParser.annotated_block_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_FBR579=null;
        Token R_FBR581=null;
        ObjcmParser.annotated_block_internal_return annotated_block_internal580 =null;


        Object L_FBR579_tree=null;
        Object R_FBR581_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:915:2: ( L_FBR ( annotated_block_internal )* R_FBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:915:4: L_FBR ( annotated_block_internal )* R_FBR
            {
            root_0 = (Object)adaptor.nil();


            L_FBR579=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_annotated_block4979); 
            L_FBR579_tree = 
            (Object)adaptor.create(L_FBR579)
            ;
            adaptor.addChild(root_0, L_FBR579_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:916:3: ( annotated_block_internal )*
            loop149:
            do {
                int alt149=2;
                int LA149_0 = input.LA(1);

                if ( (LA149_0==ID||LA149_0==VOID||LA149_0==180||LA149_0==183||(LA149_0 >= 209 && LA149_0 <= 210)) ) {
                    alt149=1;
                }


                switch (alt149) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:916:3: annotated_block_internal
            	    {
            	    pushFollow(FOLLOW_annotated_block_internal_in_annotated_block4984);
            	    annotated_block_internal580=annotated_block_internal();

            	    state._fsp--;

            	    adaptor.addChild(root_0, annotated_block_internal580.getTree());

            	    }
            	    break;

            	default :
            	    break loop149;
                }
            } while (true);


            R_FBR581=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_annotated_block4989); 
            R_FBR581_tree = 
            (Object)adaptor.create(R_FBR581)
            ;
            adaptor.addChild(root_0, R_FBR581_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "annotated_block"


    public static class annotated_block_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "annotated_block_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:920:1: annotated_block_internal : ( block_annotation | public_block_internal );
    public final ObjcmParser.annotated_block_internal_return annotated_block_internal() throws RecognitionException {
        ObjcmParser.annotated_block_internal_return retval = new ObjcmParser.annotated_block_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.block_annotation_return block_annotation582 =null;

        ObjcmParser.public_block_internal_return public_block_internal583 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:921:2: ( block_annotation | public_block_internal )
            int alt150=2;
            int LA150_0 = input.LA(1);

            if ( (LA150_0==180||LA150_0==183) ) {
                alt150=1;
            }
            else if ( (LA150_0==ID||LA150_0==VOID||(LA150_0 >= 209 && LA150_0 <= 210)) ) {
                alt150=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 150, 0, input);

                throw nvae;

            }
            switch (alt150) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:921:4: block_annotation
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_block_annotation_in_annotated_block_internal5002);
                    block_annotation582=block_annotation();

                    state._fsp--;

                    adaptor.addChild(root_0, block_annotation582.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:922:5: public_block_internal
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_public_block_internal_in_annotated_block_internal5009);
                    public_block_internal583=public_block_internal();

                    state._fsp--;

                    adaptor.addChild(root_0, public_block_internal583.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "annotated_block_internal"


    public static class block_annotation_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "block_annotation"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:925:1: block_annotation : ( '@public' | '@private' );
    public final ObjcmParser.block_annotation_return block_annotation() throws RecognitionException {
        ObjcmParser.block_annotation_return retval = new ObjcmParser.block_annotation_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set584=null;

        Object set584_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:926:2: ( '@public' | '@private' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set584=(Token)input.LT(1);

            if ( input.LA(1)==180||input.LA(1)==183 ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set584)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "block_annotation"


    public static class public_block_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "public_block_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:930:1: public_block_internal : ( simple_field_declaration | union_declaration );
    public final ObjcmParser.public_block_internal_return public_block_internal() throws RecognitionException {
        ObjcmParser.public_block_internal_return retval = new ObjcmParser.public_block_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.simple_field_declaration_return simple_field_declaration585 =null;

        ObjcmParser.union_declaration_return union_declaration586 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:931:2: ( simple_field_declaration | union_declaration )
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==ID||LA151_0==VOID||LA151_0==210) ) {
                alt151=1;
            }
            else if ( (LA151_0==209) ) {
                alt151=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 151, 0, input);

                throw nvae;

            }
            switch (alt151) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:931:4: simple_field_declaration
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_simple_field_declaration_in_public_block_internal5044);
                    simple_field_declaration585=simple_field_declaration();

                    state._fsp--;

                    adaptor.addChild(root_0, simple_field_declaration585.getTree());

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:932:4: union_declaration
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_union_declaration_in_public_block_internal5049);
                    union_declaration586=union_declaration();

                    state._fsp--;

                    adaptor.addChild(root_0, union_declaration586.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "public_block_internal"


    public static class simple_field_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "simple_field_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:935:1: simple_field_declaration : field_type name SEMICOLON ;
    public final ObjcmParser.simple_field_declaration_return simple_field_declaration() throws RecognitionException {
        ObjcmParser.simple_field_declaration_return retval = new ObjcmParser.simple_field_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON589=null;
        ObjcmParser.field_type_return field_type587 =null;

        ObjcmParser.name_return name588 =null;


        Object SEMICOLON589_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:936:2: ( field_type name SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:936:4: field_type name SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_type_in_simple_field_declaration5061);
            field_type587=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type587.getTree());

            pushFollow(FOLLOW_name_in_simple_field_declaration5063);
            name588=name();

            state._fsp--;

            adaptor.addChild(root_0, name588.getTree());

            SEMICOLON589=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_simple_field_declaration5066); 
            SEMICOLON589_tree = 
            (Object)adaptor.create(SEMICOLON589)
            ;
            adaptor.addChild(root_0, SEMICOLON589_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "simple_field_declaration"


    public static class union_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "union_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:939:1: union_declaration : 'union' L_FBR ( simple_field_declaration )+ R_FBR ID SEMICOLON ;
    public final ObjcmParser.union_declaration_return union_declaration() throws RecognitionException {
        ObjcmParser.union_declaration_return retval = new ObjcmParser.union_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal590=null;
        Token L_FBR591=null;
        Token R_FBR593=null;
        Token ID594=null;
        Token SEMICOLON595=null;
        ObjcmParser.simple_field_declaration_return simple_field_declaration592 =null;


        Object string_literal590_tree=null;
        Object L_FBR591_tree=null;
        Object R_FBR593_tree=null;
        Object ID594_tree=null;
        Object SEMICOLON595_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:940:2: ( 'union' L_FBR ( simple_field_declaration )+ R_FBR ID SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:940:4: 'union' L_FBR ( simple_field_declaration )+ R_FBR ID SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            string_literal590=(Token)match(input,209,FOLLOW_209_in_union_declaration5079); 
            string_literal590_tree = 
            (Object)adaptor.create(string_literal590)
            ;
            adaptor.addChild(root_0, string_literal590_tree);


            L_FBR591=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_union_declaration5082); 
            L_FBR591_tree = 
            (Object)adaptor.create(L_FBR591)
            ;
            adaptor.addChild(root_0, L_FBR591_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:941:4: ( simple_field_declaration )+
            int cnt152=0;
            loop152:
            do {
                int alt152=2;
                int LA152_0 = input.LA(1);

                if ( (LA152_0==ID||LA152_0==VOID||LA152_0==210) ) {
                    alt152=1;
                }


                switch (alt152) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:941:4: simple_field_declaration
            	    {
            	    pushFollow(FOLLOW_simple_field_declaration_in_union_declaration5088);
            	    simple_field_declaration592=simple_field_declaration();

            	    state._fsp--;

            	    adaptor.addChild(root_0, simple_field_declaration592.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt152 >= 1 ) break loop152;
                        EarlyExitException eee =
                            new EarlyExitException(152, input);
                        throw eee;
                }
                cnt152++;
            } while (true);


            R_FBR593=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_union_declaration5093); 
            R_FBR593_tree = 
            (Object)adaptor.create(R_FBR593)
            ;
            adaptor.addChild(root_0, R_FBR593_tree);


            ID594=(Token)match(input,ID,FOLLOW_ID_in_union_declaration5096); 
            ID594_tree = 
            (Object)adaptor.create(ID594)
            ;
            adaptor.addChild(root_0, ID594_tree);


            SEMICOLON595=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_union_declaration5099); 
            SEMICOLON595_tree = 
            (Object)adaptor.create(SEMICOLON595)
            ;
            adaptor.addChild(root_0, SEMICOLON595_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "union_declaration"


    public static class super_class_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "super_class"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:945:1: super_class : COLON ID -> ^( SUPER_CLASS ID ) ;
    public final ObjcmParser.super_class_return super_class() throws RecognitionException {
        ObjcmParser.super_class_return retval = new ObjcmParser.super_class_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON596=null;
        Token ID597=null;

        Object COLON596_tree=null;
        Object ID597_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:946:2: ( COLON ID -> ^( SUPER_CLASS ID ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:946:4: COLON ID
            {
            COLON596=(Token)match(input,COLON,FOLLOW_COLON_in_super_class5113);  
            stream_COLON.add(COLON596);


            ID597=(Token)match(input,ID,FOLLOW_ID_in_super_class5116);  
            stream_ID.add(ID597);


            // AST REWRITE
            // elements: ID
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 946:15: -> ^( SUPER_CLASS ID )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:946:18: ^( SUPER_CLASS ID )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(SUPER_CLASS, "SUPER_CLASS")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ID.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "super_class"


    public static class interface_category_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_category"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:948:1: interface_category : L_BR ( ID )? R_BR -> ^( CATEGORY L_BR ( ID )? R_BR ) ;
    public final ObjcmParser.interface_category_return interface_category() throws RecognitionException {
        ObjcmParser.interface_category_return retval = new ObjcmParser.interface_category_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR598=null;
        Token ID599=null;
        Token R_BR600=null;

        Object L_BR598_tree=null;
        Object ID599_tree=null;
        Object R_BR600_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_L_BR=new RewriteRuleTokenStream(adaptor,"token L_BR");
        RewriteRuleTokenStream stream_R_BR=new RewriteRuleTokenStream(adaptor,"token R_BR");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:2: ( L_BR ( ID )? R_BR -> ^( CATEGORY L_BR ( ID )? R_BR ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:4: L_BR ( ID )? R_BR
            {
            L_BR598=(Token)match(input,L_BR,FOLLOW_L_BR_in_interface_category5136);  
            stream_L_BR.add(L_BR598);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:10: ( ID )?
            int alt153=2;
            int LA153_0 = input.LA(1);

            if ( (LA153_0==ID) ) {
                alt153=1;
            }
            switch (alt153) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:10: ID
                    {
                    ID599=(Token)match(input,ID,FOLLOW_ID_in_interface_category5139);  
                    stream_ID.add(ID599);


                    }
                    break;

            }


            R_BR600=(Token)match(input,R_BR,FOLLOW_R_BR_in_interface_category5143);  
            stream_R_BR.add(R_BR600);


            // AST REWRITE
            // elements: ID, R_BR, L_BR
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 949:20: -> ^( CATEGORY L_BR ( ID )? R_BR )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:23: ^( CATEGORY L_BR ( ID )? R_BR )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(CATEGORY, "CATEGORY")
                , root_1);

                adaptor.addChild(root_1, 
                stream_L_BR.nextNode()
                );

                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:949:40: ( ID )?
                if ( stream_ID.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_ID.nextNode()
                    );

                }
                stream_ID.reset();

                adaptor.addChild(root_1, 
                stream_R_BR.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_category"


    public static class interface_fields_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_fields"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:951:1: interface_fields : ( interface_field_wrapper )+ ;
    public final ObjcmParser.interface_fields_return interface_fields() throws RecognitionException {
        ObjcmParser.interface_fields_return retval = new ObjcmParser.interface_fields_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.interface_field_wrapper_return interface_field_wrapper601 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:952:2: ( ( interface_field_wrapper )+ )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:952:4: ( interface_field_wrapper )+
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:952:4: ( interface_field_wrapper )+
            int cnt154=0;
            loop154:
            do {
                int alt154=2;
                int LA154_0 = input.LA(1);

                if ( (LA154_0==181) ) {
                    alt154=1;
                }
                else if ( (LA154_0==ID||LA154_0==VOID||LA154_0==210) ) {
                    alt154=1;
                }


                switch (alt154) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:952:4: interface_field_wrapper
            	    {
            	    pushFollow(FOLLOW_interface_field_wrapper_in_interface_fields5172);
            	    interface_field_wrapper601=interface_field_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, interface_field_wrapper601.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt154 >= 1 ) break loop154;
                        EarlyExitException eee =
                            new EarlyExitException(154, input);
                        throw eee;
                }
                cnt154++;
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_fields"


    public static class interface_field_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_field_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:954:1: interface_field_wrapper : interface_field -> ^( FIELD interface_field ) ;
    public final ObjcmParser.interface_field_wrapper_return interface_field_wrapper() throws RecognitionException {
        ObjcmParser.interface_field_wrapper_return retval = new ObjcmParser.interface_field_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.interface_field_return interface_field602 =null;


        RewriteRuleSubtreeStream stream_interface_field=new RewriteRuleSubtreeStream(adaptor,"rule interface_field");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:955:2: ( interface_field -> ^( FIELD interface_field ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:955:4: interface_field
            {
            pushFollow(FOLLOW_interface_field_in_interface_field_wrapper5183);
            interface_field602=interface_field();

            state._fsp--;

            stream_interface_field.add(interface_field602.getTree());

            // AST REWRITE
            // elements: interface_field
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 955:20: -> ^( FIELD interface_field )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:955:23: ^( FIELD interface_field )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD, "FIELD")
                , root_1);

                adaptor.addChild(root_1, stream_interface_field.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_field_wrapper"


    public static class interface_field_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_field"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:957:1: interface_field : ( property_prefix )? interface_field_declaration ;
    public final ObjcmParser.interface_field_return interface_field() throws RecognitionException {
        ObjcmParser.interface_field_return retval = new ObjcmParser.interface_field_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.property_prefix_return property_prefix603 =null;

        ObjcmParser.interface_field_declaration_return interface_field_declaration604 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:958:2: ( ( property_prefix )? interface_field_declaration )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:958:4: ( property_prefix )? interface_field_declaration
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:958:4: ( property_prefix )?
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( (LA155_0==181) ) {
                alt155=1;
            }
            switch (alt155) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:958:4: property_prefix
                    {
                    pushFollow(FOLLOW_property_prefix_in_interface_field5202);
                    property_prefix603=property_prefix();

                    state._fsp--;

                    adaptor.addChild(root_0, property_prefix603.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_interface_field_declaration_in_interface_field5205);
            interface_field_declaration604=interface_field_declaration();

            state._fsp--;

            adaptor.addChild(root_0, interface_field_declaration604.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_field"


    public static class interface_field_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_field_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:960:1: interface_field_declaration : field_type name SEMICOLON ;
    public final ObjcmParser.interface_field_declaration_return interface_field_declaration() throws RecognitionException {
        ObjcmParser.interface_field_declaration_return retval = new ObjcmParser.interface_field_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON607=null;
        ObjcmParser.field_type_return field_type605 =null;

        ObjcmParser.name_return name606 =null;


        Object SEMICOLON607_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:961:2: ( field_type name SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:961:4: field_type name SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_type_in_interface_field_declaration5216);
            field_type605=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type605.getTree());

            pushFollow(FOLLOW_name_in_interface_field_declaration5218);
            name606=name();

            state._fsp--;

            adaptor.addChild(root_0, name606.getTree());

            SEMICOLON607=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_interface_field_declaration5220); 
            SEMICOLON607_tree = 
            (Object)adaptor.create(SEMICOLON607)
            ;
            adaptor.addChild(root_0, SEMICOLON607_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_field_declaration"


    public static class property_prefix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "property_prefix"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:963:1: property_prefix : '@property' L_BR property ( COMMA property )* R_BR ;
    public final ObjcmParser.property_prefix_return property_prefix() throws RecognitionException {
        ObjcmParser.property_prefix_return retval = new ObjcmParser.property_prefix_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal608=null;
        Token L_BR609=null;
        Token COMMA611=null;
        Token R_BR613=null;
        ObjcmParser.property_return property610 =null;

        ObjcmParser.property_return property612 =null;


        Object string_literal608_tree=null;
        Object L_BR609_tree=null;
        Object COMMA611_tree=null;
        Object R_BR613_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:964:2: ( '@property' L_BR property ( COMMA property )* R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:964:4: '@property' L_BR property ( COMMA property )* R_BR
            {
            root_0 = (Object)adaptor.nil();


            string_literal608=(Token)match(input,181,FOLLOW_181_in_property_prefix5231); 
            string_literal608_tree = 
            (Object)adaptor.create(string_literal608)
            ;
            adaptor.addChild(root_0, string_literal608_tree);


            L_BR609=(Token)match(input,L_BR,FOLLOW_L_BR_in_property_prefix5233); 
            L_BR609_tree = 
            (Object)adaptor.create(L_BR609)
            ;
            adaptor.addChild(root_0, L_BR609_tree);


            pushFollow(FOLLOW_property_in_property_prefix5235);
            property610=property();

            state._fsp--;

            adaptor.addChild(root_0, property610.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:964:30: ( COMMA property )*
            loop156:
            do {
                int alt156=2;
                int LA156_0 = input.LA(1);

                if ( (LA156_0==COMMA) ) {
                    alt156=1;
                }


                switch (alt156) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:964:31: COMMA property
            	    {
            	    COMMA611=(Token)match(input,COMMA,FOLLOW_COMMA_in_property_prefix5238); 
            	    COMMA611_tree = 
            	    (Object)adaptor.create(COMMA611)
            	    ;
            	    adaptor.addChild(root_0, COMMA611_tree);


            	    pushFollow(FOLLOW_property_in_property_prefix5240);
            	    property612=property();

            	    state._fsp--;

            	    adaptor.addChild(root_0, property612.getTree());

            	    }
            	    break;

            	default :
            	    break loop156;
                }
            } while (true);


            R_BR613=(Token)match(input,R_BR,FOLLOW_R_BR_in_property_prefix5244); 
            R_BR613_tree = 
            (Object)adaptor.create(R_BR613)
            ;
            adaptor.addChild(root_0, R_BR613_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "property_prefix"


    public static class property_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "property"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:966:1: property : ( 'readwrite' | 'assign' | 'copy' );
    public final ObjcmParser.property_return property() throws RecognitionException {
        ObjcmParser.property_return retval = new ObjcmParser.property_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set614=null;

        Object set614_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:966:9: ( 'readwrite' | 'assign' | 'copy' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set614=(Token)input.LT(1);

            if ( input.LA(1)==191||input.LA(1)==194||input.LA(1)==205 ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set614)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "property"


    public static class interface_methods_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_methods"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:971:1: interface_methods : ( enum_declaration | interface_method )+ ;
    public final ObjcmParser.interface_methods_return interface_methods() throws RecognitionException {
        ObjcmParser.interface_methods_return retval = new ObjcmParser.interface_methods_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.enum_declaration_return enum_declaration615 =null;

        ObjcmParser.interface_method_return interface_method616 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:972:2: ( ( enum_declaration | interface_method )+ )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:972:4: ( enum_declaration | interface_method )+
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:972:4: ( enum_declaration | interface_method )+
            int cnt157=0;
            loop157:
            do {
                int alt157=3;
                int LA157_0 = input.LA(1);

                if ( (LA157_0==ENUM_PREFIX) ) {
                    alt157=1;
                }
                else if ( (LA157_0==L_MINUS||LA157_0==L_PLUS) ) {
                    alt157=2;
                }


                switch (alt157) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:972:5: enum_declaration
            	    {
            	    pushFollow(FOLLOW_enum_declaration_in_interface_methods5277);
            	    enum_declaration615=enum_declaration();

            	    state._fsp--;

            	    adaptor.addChild(root_0, enum_declaration615.getTree());

            	    }
            	    break;
            	case 2 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:972:24: interface_method
            	    {
            	    pushFollow(FOLLOW_interface_method_in_interface_methods5281);
            	    interface_method616=interface_method();

            	    state._fsp--;

            	    adaptor.addChild(root_0, interface_method616.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt157 >= 1 ) break loop157;
                        EarlyExitException eee =
                            new EarlyExitException(157, input);
                        throw eee;
                }
                cnt157++;
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_methods"


    public static class interface_method_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "interface_method"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:974:1: interface_method : method_header -> ^( METHOD method_header ) ;
    public final ObjcmParser.interface_method_return interface_method() throws RecognitionException {
        ObjcmParser.interface_method_return retval = new ObjcmParser.interface_method_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_header_return method_header617 =null;


        RewriteRuleSubtreeStream stream_method_header=new RewriteRuleSubtreeStream(adaptor,"rule method_header");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:975:2: ( method_header -> ^( METHOD method_header ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:975:4: method_header
            {
            pushFollow(FOLLOW_method_header_in_interface_method5295);
            method_header617=method_header();

            state._fsp--;

            stream_method_header.add(method_header617.getTree());

            // AST REWRITE
            // elements: method_header
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 975:18: -> ^( METHOD method_header )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:975:21: ^( METHOD method_header )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(METHOD, "METHOD")
                , root_1);

                adaptor.addChild(root_1, stream_method_header.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "interface_method"


    public static class method_header_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_header"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:977:1: method_header : method_header_body ( SEMICOLON )? ;
    public final ObjcmParser.method_header_return method_header() throws RecognitionException {
        ObjcmParser.method_header_return retval = new ObjcmParser.method_header_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON619=null;
        ObjcmParser.method_header_body_return method_header_body618 =null;


        Object SEMICOLON619_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:978:2: ( method_header_body ( SEMICOLON )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:978:4: method_header_body ( SEMICOLON )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_header_body_in_method_header5314);
            method_header_body618=method_header_body();

            state._fsp--;

            adaptor.addChild(root_0, method_header_body618.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:978:23: ( SEMICOLON )?
            int alt158=2;
            int LA158_0 = input.LA(1);

            if ( (LA158_0==SEMICOLON) ) {
                alt158=1;
            }
            switch (alt158) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:978:23: SEMICOLON
                    {
                    SEMICOLON619=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_method_header5316); 
                    SEMICOLON619_tree = 
                    (Object)adaptor.create(SEMICOLON619)
                    ;
                    adaptor.addChild(root_0, SEMICOLON619_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_header"


    public static class method_header_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_header_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:980:1: method_header_body : method_modifier_wrapper ( method_type )? name ( method_params )? ( va_args_wrapper )? ;
    public final ObjcmParser.method_header_body_return method_header_body() throws RecognitionException {
        ObjcmParser.method_header_body_return retval = new ObjcmParser.method_header_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_modifier_wrapper_return method_modifier_wrapper620 =null;

        ObjcmParser.method_type_return method_type621 =null;

        ObjcmParser.name_return name622 =null;

        ObjcmParser.method_params_return method_params623 =null;

        ObjcmParser.va_args_wrapper_return va_args_wrapper624 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:2: ( method_modifier_wrapper ( method_type )? name ( method_params )? ( va_args_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:4: method_modifier_wrapper ( method_type )? name ( method_params )? ( va_args_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_modifier_wrapper_in_method_header_body5326);
            method_modifier_wrapper620=method_modifier_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, method_modifier_wrapper620.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:29: ( method_type )?
            int alt159=2;
            int LA159_0 = input.LA(1);

            if ( (LA159_0==L_BR) ) {
                alt159=1;
            }
            switch (alt159) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:29: method_type
                    {
                    pushFollow(FOLLOW_method_type_in_method_header_body5329);
                    method_type621=method_type();

                    state._fsp--;

                    adaptor.addChild(root_0, method_type621.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_name_in_method_header_body5333);
            name622=name();

            state._fsp--;

            adaptor.addChild(root_0, name622.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:49: ( method_params )?
            int alt160=2;
            alt160 = dfa160.predict(input);
            switch (alt160) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:49: method_params
                    {
                    pushFollow(FOLLOW_method_params_in_method_header_body5336);
                    method_params623=method_params();

                    state._fsp--;

                    adaptor.addChild(root_0, method_params623.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:64: ( va_args_wrapper )?
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( (LA161_0==COMMA) ) {
                alt161=1;
            }
            switch (alt161) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:981:64: va_args_wrapper
                    {
                    pushFollow(FOLLOW_va_args_wrapper_in_method_header_body5339);
                    va_args_wrapper624=va_args_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, va_args_wrapper624.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_header_body"


    public static class va_args_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "va_args_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:983:1: va_args_wrapper : va_args -> ^( VA_ARGS va_args ) ;
    public final ObjcmParser.va_args_wrapper_return va_args_wrapper() throws RecognitionException {
        ObjcmParser.va_args_wrapper_return retval = new ObjcmParser.va_args_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.va_args_return va_args625 =null;


        RewriteRuleSubtreeStream stream_va_args=new RewriteRuleSubtreeStream(adaptor,"rule va_args");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:984:2: ( va_args -> ^( VA_ARGS va_args ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:984:4: va_args
            {
            pushFollow(FOLLOW_va_args_in_va_args_wrapper5349);
            va_args625=va_args();

            state._fsp--;

            stream_va_args.add(va_args625.getTree());

            // AST REWRITE
            // elements: va_args
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 984:12: -> ^( VA_ARGS va_args )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:984:15: ^( VA_ARGS va_args )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(VA_ARGS, "VA_ARGS")
                , root_1);

                adaptor.addChild(root_1, stream_va_args.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "va_args_wrapper"


    public static class va_args_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "va_args"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:986:1: va_args : COMMA '...' ( SEMICOLON )? ;
    public final ObjcmParser.va_args_return va_args() throws RecognitionException {
        ObjcmParser.va_args_return retval = new ObjcmParser.va_args_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA626=null;
        Token string_literal627=null;
        Token SEMICOLON628=null;

        Object COMMA626_tree=null;
        Object string_literal627_tree=null;
        Object SEMICOLON628_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:986:9: ( COMMA '...' ( SEMICOLON )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:986:11: COMMA '...' ( SEMICOLON )?
            {
            root_0 = (Object)adaptor.nil();


            COMMA626=(Token)match(input,COMMA,FOLLOW_COMMA_in_va_args5366); 
            COMMA626_tree = 
            (Object)adaptor.create(COMMA626)
            ;
            adaptor.addChild(root_0, COMMA626_tree);


            string_literal627=(Token)match(input,173,FOLLOW_173_in_va_args5369); 
            string_literal627_tree = 
            (Object)adaptor.create(string_literal627)
            ;
            adaptor.addChild(root_0, string_literal627_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:986:25: ( SEMICOLON )?
            int alt162=2;
            int LA162_0 = input.LA(1);

            if ( (LA162_0==SEMICOLON) ) {
                alt162=1;
            }
            switch (alt162) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:986:25: SEMICOLON
                    {
                    SEMICOLON628=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_va_args5372); 
                    SEMICOLON628_tree = 
                    (Object)adaptor.create(SEMICOLON628)
                    ;
                    adaptor.addChild(root_0, SEMICOLON628_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "va_args"


    public static class method_header_body2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_header_body2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:988:1: method_header_body2 : method_type name ( method_params2 )? ;
    public final ObjcmParser.method_header_body2_return method_header_body2() throws RecognitionException {
        ObjcmParser.method_header_body2_return retval = new ObjcmParser.method_header_body2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_type_return method_type629 =null;

        ObjcmParser.name_return name630 =null;

        ObjcmParser.method_params2_return method_params2631 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:989:2: ( method_type name ( method_params2 )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:989:4: method_type name ( method_params2 )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_type_in_method_header_body25383);
            method_type629=method_type();

            state._fsp--;

            adaptor.addChild(root_0, method_type629.getTree());

            pushFollow(FOLLOW_name_in_method_header_body25385);
            name630=name();

            state._fsp--;

            adaptor.addChild(root_0, name630.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:989:22: ( method_params2 )?
            int alt163=2;
            int LA163_0 = input.LA(1);

            if ( (LA163_0==L_BR) ) {
                alt163=1;
            }
            switch (alt163) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:989:22: method_params2
                    {
                    pushFollow(FOLLOW_method_params2_in_method_header_body25388);
                    method_params2631=method_params2();

                    state._fsp--;

                    adaptor.addChild(root_0, method_params2631.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_header_body2"


    public static class method_header_body3_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_header_body3"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:991:1: method_header_body3 : method_params2 ;
    public final ObjcmParser.method_header_body3_return method_header_body3() throws RecognitionException {
        ObjcmParser.method_header_body3_return retval = new ObjcmParser.method_header_body3_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_params2_return method_params2632 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:992:2: ( method_params2 )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:992:4: method_params2
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_params2_in_method_header_body35398);
            method_params2632=method_params2();

            state._fsp--;

            adaptor.addChild(root_0, method_params2632.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_header_body3"


    public static class method_modifier_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_modifier_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:994:1: method_modifier_wrapper : method_modifier -> ^( MODIFIER method_modifier ) ;
    public final ObjcmParser.method_modifier_wrapper_return method_modifier_wrapper() throws RecognitionException {
        ObjcmParser.method_modifier_wrapper_return retval = new ObjcmParser.method_modifier_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_modifier_return method_modifier633 =null;


        RewriteRuleSubtreeStream stream_method_modifier=new RewriteRuleSubtreeStream(adaptor,"rule method_modifier");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:995:2: ( method_modifier -> ^( MODIFIER method_modifier ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:995:4: method_modifier
            {
            pushFollow(FOLLOW_method_modifier_in_method_modifier_wrapper5407);
            method_modifier633=method_modifier();

            state._fsp--;

            stream_method_modifier.add(method_modifier633.getTree());

            // AST REWRITE
            // elements: method_modifier
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 995:20: -> ^( MODIFIER method_modifier )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:995:23: ^( MODIFIER method_modifier )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MODIFIER, "MODIFIER")
                , root_1);

                adaptor.addChild(root_1, stream_method_modifier.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_modifier_wrapper"


    public static class method_modifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_modifier"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:997:1: method_modifier : ( '+' | '-' );
    public final ObjcmParser.method_modifier_return method_modifier() throws RecognitionException {
        ObjcmParser.method_modifier_return retval = new ObjcmParser.method_modifier_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set634=null;

        Object set634_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:998:2: ( '+' | '-' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set634=(Token)input.LT(1);

            if ( input.LA(1)==L_MINUS||input.LA(1)==L_PLUS ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set634)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_modifier"


    public static class method_type_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_type"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1000:1: method_type : method_type_internal -> ^( TYPE method_type_internal ) ;
    public final ObjcmParser.method_type_return method_type() throws RecognitionException {
        ObjcmParser.method_type_return retval = new ObjcmParser.method_type_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_type_internal_return method_type_internal635 =null;


        RewriteRuleSubtreeStream stream_method_type_internal=new RewriteRuleSubtreeStream(adaptor,"rule method_type_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1001:2: ( method_type_internal -> ^( TYPE method_type_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1001:4: method_type_internal
            {
            pushFollow(FOLLOW_method_type_internal_in_method_type5438);
            method_type_internal635=method_type_internal();

            state._fsp--;

            stream_method_type_internal.add(method_type_internal635.getTree());

            // AST REWRITE
            // elements: method_type_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1001:25: -> ^( TYPE method_type_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1001:28: ^( TYPE method_type_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPE, "TYPE")
                , root_1);

                adaptor.addChild(root_1, stream_method_type_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_type"


    public static class method_type_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_type_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1003:1: method_type_internal : ( L_BR ( STRUCT_PREFIX )? type_internal ( generic )? ( ASTERISK )* R_BR | L_BR ( CONST_PREFIX )? ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? ( ASTERISK )* R_BR -> ^( L_BR ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? R_BR ) );
    public final ObjcmParser.method_type_internal_return method_type_internal() throws RecognitionException {
        ObjcmParser.method_type_internal_return retval = new ObjcmParser.method_type_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR636=null;
        Token STRUCT_PREFIX637=null;
        Token ASTERISK640=null;
        Token R_BR641=null;
        Token L_BR642=null;
        Token CONST_PREFIX643=null;
        Token ID645=null;
        Token L_KBR646=null;
        Token R_KBR647=null;
        Token ASTERISK649=null;
        Token R_BR650=null;
        ObjcmParser.type_internal_return type_internal638 =null;

        ObjcmParser.generic_return generic639 =null;

        ObjcmParser.known_types_return known_types644 =null;

        ObjcmParser.generic_return generic648 =null;


        Object L_BR636_tree=null;
        Object STRUCT_PREFIX637_tree=null;
        Object ASTERISK640_tree=null;
        Object R_BR641_tree=null;
        Object L_BR642_tree=null;
        Object CONST_PREFIX643_tree=null;
        Object ID645_tree=null;
        Object L_KBR646_tree=null;
        Object R_KBR647_tree=null;
        Object ASTERISK649_tree=null;
        Object R_BR650_tree=null;
        RewriteRuleTokenStream stream_R_KBR=new RewriteRuleTokenStream(adaptor,"token R_KBR");
        RewriteRuleTokenStream stream_ASTERISK=new RewriteRuleTokenStream(adaptor,"token ASTERISK");
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_L_BR=new RewriteRuleTokenStream(adaptor,"token L_BR");
        RewriteRuleTokenStream stream_L_KBR=new RewriteRuleTokenStream(adaptor,"token L_KBR");
        RewriteRuleTokenStream stream_R_BR=new RewriteRuleTokenStream(adaptor,"token R_BR");
        RewriteRuleTokenStream stream_CONST_PREFIX=new RewriteRuleTokenStream(adaptor,"token CONST_PREFIX");
        RewriteRuleSubtreeStream stream_generic=new RewriteRuleSubtreeStream(adaptor,"rule generic");
        RewriteRuleSubtreeStream stream_known_types=new RewriteRuleSubtreeStream(adaptor,"rule known_types");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:2: ( L_BR ( STRUCT_PREFIX )? type_internal ( generic )? ( ASTERISK )* R_BR | L_BR ( CONST_PREFIX )? ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? ( ASTERISK )* R_BR -> ^( L_BR ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? R_BR ) )
            int alt173=2;
            int LA173_0 = input.LA(1);

            if ( (LA173_0==L_BR) ) {
                switch ( input.LA(2) ) {
                case STRUCT_PREFIX:
                    {
                    alt173=1;
                    }
                    break;
                case VOID:
                case 210:
                    {
                    switch ( input.LA(3) ) {
                    case L_KBR:
                        {
                        int LA173_10 = input.LA(4);

                        if ( (LA173_10==R_KBR) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 10, input);

                            throw nvae;

                        }
                        }
                        break;
                    case L_LESS:
                        {
                        int LA173_11 = input.LA(4);

                        if ( (LA173_11==ID) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 11, input);

                            throw nvae;

                        }
                        }
                        break;
                    case ASTERISK:
                        {
                        int LA173_12 = input.LA(4);

                        if ( (LA173_12==R_BR) ) {
                            alt173=1;
                        }
                        else if ( (LA173_12==ASTERISK) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 12, input);

                            throw nvae;

                        }
                        }
                        break;
                    case R_BR:
                        {
                        alt173=1;
                        }
                        break;
                    case ID:
                        {
                        alt173=2;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 173, 3, input);

                        throw nvae;

                    }

                    }
                    break;
                case ASTERISK:
                case CONST_PREFIX:
                case L_KBR:
                case L_LESS:
                case R_BR:
                    {
                    alt173=2;
                    }
                    break;
                case ID:
                    {
                    switch ( input.LA(3) ) {
                    case L_KBR:
                        {
                        int LA173_15 = input.LA(4);

                        if ( (LA173_15==R_KBR) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 15, input);

                            throw nvae;

                        }
                        }
                        break;
                    case L_LESS:
                        {
                        int LA173_16 = input.LA(4);

                        if ( (LA173_16==ID) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 16, input);

                            throw nvae;

                        }
                        }
                        break;
                    case ASTERISK:
                        {
                        int LA173_17 = input.LA(4);

                        if ( (LA173_17==R_BR) ) {
                            alt173=1;
                        }
                        else if ( (LA173_17==ASTERISK) ) {
                            alt173=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 173, 17, input);

                            throw nvae;

                        }
                        }
                        break;
                    case R_BR:
                        {
                        alt173=1;
                        }
                        break;
                    case ID:
                        {
                        alt173=2;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 173, 5, input);

                        throw nvae;

                    }

                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 173, 1, input);

                    throw nvae;

                }

            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 173, 0, input);

                throw nvae;

            }
            switch (alt173) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:4: L_BR ( STRUCT_PREFIX )? type_internal ( generic )? ( ASTERISK )* R_BR
                    {
                    root_0 = (Object)adaptor.nil();


                    L_BR636=(Token)match(input,L_BR,FOLLOW_L_BR_in_method_type_internal5456); 
                    L_BR636_tree = 
                    (Object)adaptor.create(L_BR636)
                    ;
                    adaptor.addChild(root_0, L_BR636_tree);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:9: ( STRUCT_PREFIX )?
                    int alt164=2;
                    int LA164_0 = input.LA(1);

                    if ( (LA164_0==STRUCT_PREFIX) ) {
                        alt164=1;
                    }
                    switch (alt164) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:9: STRUCT_PREFIX
                            {
                            STRUCT_PREFIX637=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_method_type_internal5458); 
                            STRUCT_PREFIX637_tree = 
                            (Object)adaptor.create(STRUCT_PREFIX637)
                            ;
                            adaptor.addChild(root_0, STRUCT_PREFIX637_tree);


                            }
                            break;

                    }


                    pushFollow(FOLLOW_type_internal_in_method_type_internal5461);
                    type_internal638=type_internal();

                    state._fsp--;

                    adaptor.addChild(root_0, type_internal638.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:38: ( generic )?
                    int alt165=2;
                    int LA165_0 = input.LA(1);

                    if ( (LA165_0==L_LESS) ) {
                        alt165=1;
                    }
                    switch (alt165) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:38: generic
                            {
                            pushFollow(FOLLOW_generic_in_method_type_internal5463);
                            generic639=generic();

                            state._fsp--;

                            adaptor.addChild(root_0, generic639.getTree());

                            }
                            break;

                    }


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:47: ( ASTERISK )*
                    loop166:
                    do {
                        int alt166=2;
                        int LA166_0 = input.LA(1);

                        if ( (LA166_0==ASTERISK) ) {
                            alt166=1;
                        }


                        switch (alt166) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1004:47: ASTERISK
                    	    {
                    	    ASTERISK640=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_method_type_internal5466); 
                    	    ASTERISK640_tree = 
                    	    (Object)adaptor.create(ASTERISK640)
                    	    ;
                    	    adaptor.addChild(root_0, ASTERISK640_tree);


                    	    }
                    	    break;

                    	default :
                    	    break loop166;
                        }
                    } while (true);


                    R_BR641=(Token)match(input,R_BR,FOLLOW_R_BR_in_method_type_internal5469); 
                    R_BR641_tree = 
                    (Object)adaptor.create(R_BR641)
                    ;
                    adaptor.addChild(root_0, R_BR641_tree);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:5: L_BR ( CONST_PREFIX )? ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? ( ASTERISK )* R_BR
                    {
                    L_BR642=(Token)match(input,L_BR,FOLLOW_L_BR_in_method_type_internal5475);  
                    stream_L_BR.add(L_BR642);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:10: ( CONST_PREFIX )?
                    int alt167=2;
                    int LA167_0 = input.LA(1);

                    if ( (LA167_0==CONST_PREFIX) ) {
                        alt167=1;
                    }
                    switch (alt167) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:10: CONST_PREFIX
                            {
                            CONST_PREFIX643=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_method_type_internal5477);  
                            stream_CONST_PREFIX.add(CONST_PREFIX643);


                            }
                            break;

                    }


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:24: ( known_types )?
                    int alt168=2;
                    int LA168_0 = input.LA(1);

                    if ( (LA168_0==VOID||LA168_0==210) ) {
                        alt168=1;
                    }
                    switch (alt168) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:24: known_types
                            {
                            pushFollow(FOLLOW_known_types_in_method_type_internal5480);
                            known_types644=known_types();

                            state._fsp--;

                            stream_known_types.add(known_types644.getTree());

                            }
                            break;

                    }


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:37: ( ID )*
                    loop169:
                    do {
                        int alt169=2;
                        int LA169_0 = input.LA(1);

                        if ( (LA169_0==ID) ) {
                            alt169=1;
                        }


                        switch (alt169) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:37: ID
                    	    {
                    	    ID645=(Token)match(input,ID,FOLLOW_ID_in_method_type_internal5483);  
                    	    stream_ID.add(ID645);


                    	    }
                    	    break;

                    	default :
                    	    break loop169;
                        }
                    } while (true);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:41: ( L_KBR R_KBR )*
                    loop170:
                    do {
                        int alt170=2;
                        int LA170_0 = input.LA(1);

                        if ( (LA170_0==L_KBR) ) {
                            alt170=1;
                        }


                        switch (alt170) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:42: L_KBR R_KBR
                    	    {
                    	    L_KBR646=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_method_type_internal5487);  
                    	    stream_L_KBR.add(L_KBR646);


                    	    R_KBR647=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_method_type_internal5489);  
                    	    stream_R_KBR.add(R_KBR647);


                    	    }
                    	    break;

                    	default :
                    	    break loop170;
                        }
                    } while (true);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:56: ( generic )?
                    int alt171=2;
                    int LA171_0 = input.LA(1);

                    if ( (LA171_0==L_LESS) ) {
                        alt171=1;
                    }
                    switch (alt171) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:56: generic
                            {
                            pushFollow(FOLLOW_generic_in_method_type_internal5493);
                            generic648=generic();

                            state._fsp--;

                            stream_generic.add(generic648.getTree());

                            }
                            break;

                    }


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:65: ( ASTERISK )*
                    loop172:
                    do {
                        int alt172=2;
                        int LA172_0 = input.LA(1);

                        if ( (LA172_0==ASTERISK) ) {
                            alt172=1;
                        }


                        switch (alt172) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:65: ASTERISK
                    	    {
                    	    ASTERISK649=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_method_type_internal5496);  
                    	    stream_ASTERISK.add(ASTERISK649);


                    	    }
                    	    break;

                    	default :
                    	    break loop172;
                        }
                    } while (true);


                    R_BR650=(Token)match(input,R_BR,FOLLOW_R_BR_in_method_type_internal5499);  
                    stream_R_BR.add(R_BR650);


                    // AST REWRITE
                    // elements: generic, R_KBR, L_BR, ID, L_KBR, known_types, R_BR
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1005:80: -> ^( L_BR ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? R_BR )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:83: ^( L_BR ( known_types )? ( ID )* ( L_KBR R_KBR )* ( generic )? R_BR )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        stream_L_BR.nextNode()
                        , root_1);

                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:91: ( known_types )?
                        if ( stream_known_types.hasNext() ) {
                            adaptor.addChild(root_1, stream_known_types.nextTree());

                        }
                        stream_known_types.reset();

                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:104: ( ID )*
                        while ( stream_ID.hasNext() ) {
                            adaptor.addChild(root_1, 
                            stream_ID.nextNode()
                            );

                        }
                        stream_ID.reset();

                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:108: ( L_KBR R_KBR )*
                        while ( stream_L_KBR.hasNext()||stream_R_KBR.hasNext() ) {
                            adaptor.addChild(root_1, 
                            stream_L_KBR.nextNode()
                            );

                            adaptor.addChild(root_1, 
                            stream_R_KBR.nextNode()
                            );

                        }
                        stream_L_KBR.reset();
                        stream_R_KBR.reset();

                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1005:123: ( generic )?
                        if ( stream_generic.hasNext() ) {
                            adaptor.addChild(root_1, stream_generic.nextTree());

                        }
                        stream_generic.reset();

                        adaptor.addChild(root_1, 
                        stream_R_BR.nextNode()
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_type_internal"


    public static class type_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1008:1: type_internal : type_internal1 ( L_KBR R_KBR )? ;
    public final ObjcmParser.type_internal_return type_internal() throws RecognitionException {
        ObjcmParser.type_internal_return retval = new ObjcmParser.type_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_KBR652=null;
        Token R_KBR653=null;
        ObjcmParser.type_internal1_return type_internal1651 =null;


        Object L_KBR652_tree=null;
        Object R_KBR653_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1009:2: ( type_internal1 ( L_KBR R_KBR )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1009:4: type_internal1 ( L_KBR R_KBR )?
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_type_internal1_in_type_internal5540);
            type_internal1651=type_internal1();

            state._fsp--;

            adaptor.addChild(root_0, type_internal1651.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1009:19: ( L_KBR R_KBR )?
            int alt174=2;
            int LA174_0 = input.LA(1);

            if ( (LA174_0==L_KBR) ) {
                int LA174_1 = input.LA(2);

                if ( (LA174_1==R_KBR) ) {
                    alt174=1;
                }
            }
            switch (alt174) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1009:20: L_KBR R_KBR
                    {
                    L_KBR652=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_type_internal5543); 
                    L_KBR652_tree = 
                    (Object)adaptor.create(L_KBR652)
                    ;
                    adaptor.addChild(root_0, L_KBR652_tree);


                    R_KBR653=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_type_internal5546); 
                    R_KBR653_tree = 
                    (Object)adaptor.create(R_KBR653)
                    ;
                    adaptor.addChild(root_0, R_KBR653_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_internal"


    public static class type_internal1_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_internal1"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1012:1: type_internal1 : ( VOID | ID | 'unsigned' );
    public final ObjcmParser.type_internal1_return type_internal1() throws RecognitionException {
        ObjcmParser.type_internal1_return retval = new ObjcmParser.type_internal1_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set654=null;

        Object set654_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1013:2: ( VOID | ID | 'unsigned' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set654=(Token)input.LT(1);

            if ( input.LA(1)==ID||input.LA(1)==VOID||input.LA(1)==210 ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set654)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_internal1"


    public static class generic_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "generic"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1018:1: generic : L_LESS generic_internal_wrapper L_MORE ;
    public final ObjcmParser.generic_return generic() throws RecognitionException {
        ObjcmParser.generic_return retval = new ObjcmParser.generic_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_LESS655=null;
        Token L_MORE657=null;
        ObjcmParser.generic_internal_wrapper_return generic_internal_wrapper656 =null;


        Object L_LESS655_tree=null;
        Object L_MORE657_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1018:8: ( L_LESS generic_internal_wrapper L_MORE )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1018:11: L_LESS generic_internal_wrapper L_MORE
            {
            root_0 = (Object)adaptor.nil();


            L_LESS655=(Token)match(input,L_LESS,FOLLOW_L_LESS_in_generic5585); 
            L_LESS655_tree = 
            (Object)adaptor.create(L_LESS655)
            ;
            adaptor.addChild(root_0, L_LESS655_tree);


            pushFollow(FOLLOW_generic_internal_wrapper_in_generic5587);
            generic_internal_wrapper656=generic_internal_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, generic_internal_wrapper656.getTree());

            L_MORE657=(Token)match(input,L_MORE,FOLLOW_L_MORE_in_generic5589); 
            L_MORE657_tree = 
            (Object)adaptor.create(L_MORE657)
            ;
            adaptor.addChild(root_0, L_MORE657_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "generic"


    public static class generic_internal_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "generic_internal_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1020:1: generic_internal_wrapper : generic_internal -> ^( GENERIC generic_internal ) ;
    public final ObjcmParser.generic_internal_wrapper_return generic_internal_wrapper() throws RecognitionException {
        ObjcmParser.generic_internal_wrapper_return retval = new ObjcmParser.generic_internal_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.generic_internal_return generic_internal658 =null;


        RewriteRuleSubtreeStream stream_generic_internal=new RewriteRuleSubtreeStream(adaptor,"rule generic_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1021:2: ( generic_internal -> ^( GENERIC generic_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1021:4: generic_internal
            {
            pushFollow(FOLLOW_generic_internal_in_generic_internal_wrapper5599);
            generic_internal658=generic_internal();

            state._fsp--;

            stream_generic_internal.add(generic_internal658.getTree());

            // AST REWRITE
            // elements: generic_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1021:21: -> ^( GENERIC generic_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1021:24: ^( GENERIC generic_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(GENERIC, "GENERIC")
                , root_1);

                adaptor.addChild(root_1, stream_generic_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "generic_internal_wrapper"


    public static class generic_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "generic_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1023:1: generic_internal : ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )* ;
    public final ObjcmParser.generic_internal_return generic_internal() throws RecognitionException {
        ObjcmParser.generic_internal_return retval = new ObjcmParser.generic_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID659=null;
        Token ASTERISK660=null;
        Token COMMA661=null;
        Token ID662=null;
        Token ASTERISK663=null;

        Object ID659_tree=null;
        Object ASTERISK660_tree=null;
        Object COMMA661_tree=null;
        Object ID662_tree=null;
        Object ASTERISK663_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:2: ( ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:5: ID ( ASTERISK )* ( COMMA ID ( ASTERISK )* )*
            {
            root_0 = (Object)adaptor.nil();


            ID659=(Token)match(input,ID,FOLLOW_ID_in_generic_internal5617); 
            ID659_tree = 
            (Object)adaptor.create(ID659)
            ;
            adaptor.addChild(root_0, ID659_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:8: ( ASTERISK )*
            loop175:
            do {
                int alt175=2;
                int LA175_0 = input.LA(1);

                if ( (LA175_0==ASTERISK) ) {
                    alt175=1;
                }


                switch (alt175) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:8: ASTERISK
            	    {
            	    ASTERISK660=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_generic_internal5619); 
            	    ASTERISK660_tree = 
            	    (Object)adaptor.create(ASTERISK660)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK660_tree);


            	    }
            	    break;

            	default :
            	    break loop175;
                }
            } while (true);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:18: ( COMMA ID ( ASTERISK )* )*
            loop177:
            do {
                int alt177=2;
                int LA177_0 = input.LA(1);

                if ( (LA177_0==COMMA) ) {
                    alt177=1;
                }


                switch (alt177) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:19: COMMA ID ( ASTERISK )*
            	    {
            	    COMMA661=(Token)match(input,COMMA,FOLLOW_COMMA_in_generic_internal5623); 
            	    COMMA661_tree = 
            	    (Object)adaptor.create(COMMA661)
            	    ;
            	    adaptor.addChild(root_0, COMMA661_tree);


            	    ID662=(Token)match(input,ID,FOLLOW_ID_in_generic_internal5626); 
            	    ID662_tree = 
            	    (Object)adaptor.create(ID662)
            	    ;
            	    adaptor.addChild(root_0, ID662_tree);


            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:30: ( ASTERISK )*
            	    loop176:
            	    do {
            	        int alt176=2;
            	        int LA176_0 = input.LA(1);

            	        if ( (LA176_0==ASTERISK) ) {
            	            alt176=1;
            	        }


            	        switch (alt176) {
            	    	case 1 :
            	    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1024:30: ASTERISK
            	    	    {
            	    	    ASTERISK663=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_generic_internal5629); 
            	    	    ASTERISK663_tree = 
            	    	    (Object)adaptor.create(ASTERISK663)
            	    	    ;
            	    	    adaptor.addChild(root_0, ASTERISK663_tree);


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop176;
            	        }
            	    } while (true);


            	    }
            	    break;

            	default :
            	    break loop177;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "generic_internal"


    public static class method_params2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_params2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1026:1: method_params2 : L_BR ( method_param_wrapper2 ( COMMA method_param_wrapper2 )* )? R_BR ;
    public final ObjcmParser.method_params2_return method_params2() throws RecognitionException {
        ObjcmParser.method_params2_return retval = new ObjcmParser.method_params2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_BR664=null;
        Token COMMA666=null;
        Token R_BR668=null;
        ObjcmParser.method_param_wrapper2_return method_param_wrapper2665 =null;

        ObjcmParser.method_param_wrapper2_return method_param_wrapper2667 =null;


        Object L_BR664_tree=null;
        Object COMMA666_tree=null;
        Object R_BR668_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:2: ( L_BR ( method_param_wrapper2 ( COMMA method_param_wrapper2 )* )? R_BR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:4: L_BR ( method_param_wrapper2 ( COMMA method_param_wrapper2 )* )? R_BR
            {
            root_0 = (Object)adaptor.nil();


            L_BR664=(Token)match(input,L_BR,FOLLOW_L_BR_in_method_params25641); 
            L_BR664_tree = 
            (Object)adaptor.create(L_BR664)
            ;
            adaptor.addChild(root_0, L_BR664_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:10: ( method_param_wrapper2 ( COMMA method_param_wrapper2 )* )?
            int alt179=2;
            int LA179_0 = input.LA(1);

            if ( (LA179_0==CONST_PREFIX||LA179_0==ENUM_PREFIX||LA179_0==ID||LA179_0==STRUCT_PREFIX||LA179_0==VOID||LA179_0==210) ) {
                alt179=1;
            }
            switch (alt179) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:11: method_param_wrapper2 ( COMMA method_param_wrapper2 )*
                    {
                    pushFollow(FOLLOW_method_param_wrapper2_in_method_params25645);
                    method_param_wrapper2665=method_param_wrapper2();

                    state._fsp--;

                    adaptor.addChild(root_0, method_param_wrapper2665.getTree());

                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:33: ( COMMA method_param_wrapper2 )*
                    loop178:
                    do {
                        int alt178=2;
                        int LA178_0 = input.LA(1);

                        if ( (LA178_0==COMMA) ) {
                            alt178=1;
                        }


                        switch (alt178) {
                    	case 1 :
                    	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1027:34: COMMA method_param_wrapper2
                    	    {
                    	    COMMA666=(Token)match(input,COMMA,FOLLOW_COMMA_in_method_params25648); 
                    	    COMMA666_tree = 
                    	    (Object)adaptor.create(COMMA666)
                    	    ;
                    	    adaptor.addChild(root_0, COMMA666_tree);


                    	    pushFollow(FOLLOW_method_param_wrapper2_in_method_params25650);
                    	    method_param_wrapper2667=method_param_wrapper2();

                    	    state._fsp--;

                    	    adaptor.addChild(root_0, method_param_wrapper2667.getTree());

                    	    }
                    	    break;

                    	default :
                    	    break loop178;
                        }
                    } while (true);


                    }
                    break;

            }


            R_BR668=(Token)match(input,R_BR,FOLLOW_R_BR_in_method_params25656); 
            R_BR668_tree = 
            (Object)adaptor.create(R_BR668)
            ;
            adaptor.addChild(root_0, R_BR668_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_params2"


    public static class method_param_wrapper2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_param_wrapper2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1030:1: method_param_wrapper2 : method_param2 -> ^( PARAM method_param2 ) ;
    public final ObjcmParser.method_param_wrapper2_return method_param_wrapper2() throws RecognitionException {
        ObjcmParser.method_param_wrapper2_return retval = new ObjcmParser.method_param_wrapper2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_param2_return method_param2669 =null;


        RewriteRuleSubtreeStream stream_method_param2=new RewriteRuleSubtreeStream(adaptor,"rule method_param2");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1031:2: ( method_param2 -> ^( PARAM method_param2 ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1031:4: method_param2
            {
            pushFollow(FOLLOW_method_param2_in_method_param_wrapper25667);
            method_param2669=method_param2();

            state._fsp--;

            stream_method_param2.add(method_param2669.getTree());

            // AST REWRITE
            // elements: method_param2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1031:18: -> ^( PARAM method_param2 )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1031:21: ^( PARAM method_param2 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PARAM, "PARAM")
                , root_1);

                adaptor.addChild(root_1, stream_method_param2.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_param_wrapper2"


    public static class method_param2_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_param2"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1033:1: method_param2 : ( CONST_PREFIX )? ( ENUM_PREFIX )? ( STRUCT_PREFIX )? ( 'unsigned' )? field_type ( name )? ( index_wrapper )? ;
    public final ObjcmParser.method_param2_return method_param2() throws RecognitionException {
        ObjcmParser.method_param2_return retval = new ObjcmParser.method_param2_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token CONST_PREFIX670=null;
        Token ENUM_PREFIX671=null;
        Token STRUCT_PREFIX672=null;
        Token string_literal673=null;
        ObjcmParser.field_type_return field_type674 =null;

        ObjcmParser.name_return name675 =null;

        ObjcmParser.index_wrapper_return index_wrapper676 =null;


        Object CONST_PREFIX670_tree=null;
        Object ENUM_PREFIX671_tree=null;
        Object STRUCT_PREFIX672_tree=null;
        Object string_literal673_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:2: ( ( CONST_PREFIX )? ( ENUM_PREFIX )? ( STRUCT_PREFIX )? ( 'unsigned' )? field_type ( name )? ( index_wrapper )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:4: ( CONST_PREFIX )? ( ENUM_PREFIX )? ( STRUCT_PREFIX )? ( 'unsigned' )? field_type ( name )? ( index_wrapper )?
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:4: ( CONST_PREFIX )?
            int alt180=2;
            int LA180_0 = input.LA(1);

            if ( (LA180_0==CONST_PREFIX) ) {
                alt180=1;
            }
            switch (alt180) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:4: CONST_PREFIX
                    {
                    CONST_PREFIX670=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_method_param25685); 
                    CONST_PREFIX670_tree = 
                    (Object)adaptor.create(CONST_PREFIX670)
                    ;
                    adaptor.addChild(root_0, CONST_PREFIX670_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:18: ( ENUM_PREFIX )?
            int alt181=2;
            int LA181_0 = input.LA(1);

            if ( (LA181_0==ENUM_PREFIX) ) {
                alt181=1;
            }
            switch (alt181) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:18: ENUM_PREFIX
                    {
                    ENUM_PREFIX671=(Token)match(input,ENUM_PREFIX,FOLLOW_ENUM_PREFIX_in_method_param25688); 
                    ENUM_PREFIX671_tree = 
                    (Object)adaptor.create(ENUM_PREFIX671)
                    ;
                    adaptor.addChild(root_0, ENUM_PREFIX671_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:31: ( STRUCT_PREFIX )?
            int alt182=2;
            int LA182_0 = input.LA(1);

            if ( (LA182_0==STRUCT_PREFIX) ) {
                alt182=1;
            }
            switch (alt182) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:31: STRUCT_PREFIX
                    {
                    STRUCT_PREFIX672=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_method_param25691); 
                    STRUCT_PREFIX672_tree = 
                    (Object)adaptor.create(STRUCT_PREFIX672)
                    ;
                    adaptor.addChild(root_0, STRUCT_PREFIX672_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:46: ( 'unsigned' )?
            int alt183=2;
            int LA183_0 = input.LA(1);

            if ( (LA183_0==210) ) {
                int LA183_1 = input.LA(2);

                if ( (LA183_1==ID||LA183_1==VOID||LA183_1==210) ) {
                    alt183=1;
                }
            }
            switch (alt183) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:46: 'unsigned'
                    {
                    string_literal673=(Token)match(input,210,FOLLOW_210_in_method_param25694); 
                    string_literal673_tree = 
                    (Object)adaptor.create(string_literal673)
                    ;
                    adaptor.addChild(root_0, string_literal673_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_field_type_in_method_param25697);
            field_type674=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type674.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:69: ( name )?
            int alt184=2;
            int LA184_0 = input.LA(1);

            if ( (LA184_0==ID||LA184_0==191||LA184_0==194||LA184_0==202||LA184_0==205) ) {
                alt184=1;
            }
            switch (alt184) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:69: name
                    {
                    pushFollow(FOLLOW_name_in_method_param25699);
                    name675=name();

                    state._fsp--;

                    adaptor.addChild(root_0, name675.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:75: ( index_wrapper )?
            int alt185=2;
            int LA185_0 = input.LA(1);

            if ( (LA185_0==L_KBR) ) {
                alt185=1;
            }
            switch (alt185) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1034:75: index_wrapper
                    {
                    pushFollow(FOLLOW_index_wrapper_in_method_param25702);
                    index_wrapper676=index_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, index_wrapper676.getTree());

                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_param2"


    public static class indexed_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "indexed"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1036:1: indexed : L_KBR ( NUMBER )? R_KBR ;
    public final ObjcmParser.indexed_return indexed() throws RecognitionException {
        ObjcmParser.indexed_return retval = new ObjcmParser.indexed_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token L_KBR677=null;
        Token NUMBER678=null;
        Token R_KBR679=null;

        Object L_KBR677_tree=null;
        Object NUMBER678_tree=null;
        Object R_KBR679_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1036:9: ( L_KBR ( NUMBER )? R_KBR )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1036:11: L_KBR ( NUMBER )? R_KBR
            {
            root_0 = (Object)adaptor.nil();


            L_KBR677=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_indexed5712); 
            L_KBR677_tree = 
            (Object)adaptor.create(L_KBR677)
            ;
            adaptor.addChild(root_0, L_KBR677_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1036:17: ( NUMBER )?
            int alt186=2;
            int LA186_0 = input.LA(1);

            if ( (LA186_0==NUMBER) ) {
                alt186=1;
            }
            switch (alt186) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1036:17: NUMBER
                    {
                    NUMBER678=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_indexed5714); 
                    NUMBER678_tree = 
                    (Object)adaptor.create(NUMBER678)
                    ;
                    adaptor.addChild(root_0, NUMBER678_tree);


                    }
                    break;

            }


            R_KBR679=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_indexed5717); 
            R_KBR679_tree = 
            (Object)adaptor.create(R_KBR679)
            ;
            adaptor.addChild(root_0, R_KBR679_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "indexed"


    public static class method_params_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_params"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1038:1: method_params : ( method_param_wrapper )+ ;
    public final ObjcmParser.method_params_return method_params() throws RecognitionException {
        ObjcmParser.method_params_return retval = new ObjcmParser.method_params_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_param_wrapper_return method_param_wrapper680 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1039:2: ( ( method_param_wrapper )+ )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1039:4: ( method_param_wrapper )+
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1039:4: ( method_param_wrapper )+
            int cnt187=0;
            loop187:
            do {
                int alt187=2;
                alt187 = dfa187.predict(input);
                switch (alt187) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1039:4: method_param_wrapper
            	    {
            	    pushFollow(FOLLOW_method_param_wrapper_in_method_params5727);
            	    method_param_wrapper680=method_param_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, method_param_wrapper680.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt187 >= 1 ) break loop187;
                        EarlyExitException eee =
                            new EarlyExitException(187, input);
                        throw eee;
                }
                cnt187++;
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_params"


    public static class method_param_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_param_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1041:1: method_param_wrapper : method_param -> ^( PARAM method_param ) ;
    public final ObjcmParser.method_param_wrapper_return method_param_wrapper() throws RecognitionException {
        ObjcmParser.method_param_wrapper_return retval = new ObjcmParser.method_param_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_param_return method_param681 =null;


        RewriteRuleSubtreeStream stream_method_param=new RewriteRuleSubtreeStream(adaptor,"rule method_param");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1042:2: ( method_param -> ^( PARAM method_param ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1042:4: method_param
            {
            pushFollow(FOLLOW_method_param_in_method_param_wrapper5739);
            method_param681=method_param();

            state._fsp--;

            stream_method_param.add(method_param681.getTree());

            // AST REWRITE
            // elements: method_param
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1042:17: -> ^( PARAM method_param )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1042:20: ^( PARAM method_param )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PARAM, "PARAM")
                , root_1);

                adaptor.addChild(root_1, stream_method_param.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_param_wrapper"


    public static class method_param_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_param"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1044:1: method_param : ( ( prefix )? | COLON ) ( method_type )? name ;
    public final ObjcmParser.method_param_return method_param() throws RecognitionException {
        ObjcmParser.method_param_return retval = new ObjcmParser.method_param_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON683=null;
        ObjcmParser.prefix_return prefix682 =null;

        ObjcmParser.method_type_return method_type684 =null;

        ObjcmParser.name_return name685 =null;


        Object COLON683_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:2: ( ( ( prefix )? | COLON ) ( method_type )? name )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:4: ( ( prefix )? | COLON ) ( method_type )? name
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:4: ( ( prefix )? | COLON )
            int alt189=2;
            int LA189_0 = input.LA(1);

            if ( (LA189_0==ID||LA189_0==L_BR||LA189_0==191||LA189_0==194||LA189_0==202||LA189_0==205) ) {
                alt189=1;
            }
            else if ( (LA189_0==COLON) ) {
                alt189=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 189, 0, input);

                throw nvae;

            }
            switch (alt189) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:5: ( prefix )?
                    {
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:5: ( prefix )?
                    int alt188=2;
                    int LA188_0 = input.LA(1);

                    if ( (LA188_0==ID) ) {
                        int LA188_1 = input.LA(2);

                        if ( (LA188_1==COLON) ) {
                            alt188=1;
                        }
                    }
                    switch (alt188) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:5: prefix
                            {
                            pushFollow(FOLLOW_prefix_in_method_param5759);
                            prefix682=prefix();

                            state._fsp--;

                            adaptor.addChild(root_0, prefix682.getTree());

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:15: COLON
                    {
                    COLON683=(Token)match(input,COLON,FOLLOW_COLON_in_method_param5764); 
                    COLON683_tree = 
                    (Object)adaptor.create(COLON683)
                    ;
                    adaptor.addChild(root_0, COLON683_tree);


                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:22: ( method_type )?
            int alt190=2;
            int LA190_0 = input.LA(1);

            if ( (LA190_0==L_BR) ) {
                alt190=1;
            }
            switch (alt190) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1045:22: method_type
                    {
                    pushFollow(FOLLOW_method_type_in_method_param5767);
                    method_type684=method_type();

                    state._fsp--;

                    adaptor.addChild(root_0, method_type684.getTree());

                    }
                    break;

            }


            pushFollow(FOLLOW_name_in_method_param5770);
            name685=name();

            state._fsp--;

            adaptor.addChild(root_0, name685.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_param"


    public static class prefix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "prefix"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1048:1: prefix : ID COLON -> ^( PREFIX ID COLON ) ;
    public final ObjcmParser.prefix_return prefix() throws RecognitionException {
        ObjcmParser.prefix_return retval = new ObjcmParser.prefix_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID686=null;
        Token COLON687=null;

        Object ID686_tree=null;
        Object COLON687_tree=null;
        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1048:8: ( ID COLON -> ^( PREFIX ID COLON ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1048:10: ID COLON
            {
            ID686=(Token)match(input,ID,FOLLOW_ID_in_prefix5782);  
            stream_ID.add(ID686);


            COLON687=(Token)match(input,COLON,FOLLOW_COLON_in_prefix5784);  
            stream_COLON.add(COLON687);


            // AST REWRITE
            // elements: COLON, ID
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1048:19: -> ^( PREFIX ID COLON )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1048:22: ^( PREFIX ID COLON )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(PREFIX, "PREFIX")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ID.nextNode()
                );

                adaptor.addChild(root_1, 
                stream_COLON.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "prefix"


    public static class incomplete_prefix_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "incomplete_prefix"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1050:1: incomplete_prefix : COLON -> ^( INCOMPLETE_PREFIX COLON ) ;
    public final ObjcmParser.incomplete_prefix_return incomplete_prefix() throws RecognitionException {
        ObjcmParser.incomplete_prefix_return retval = new ObjcmParser.incomplete_prefix_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COLON688=null;

        Object COLON688_tree=null;
        RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1051:2: ( COLON -> ^( INCOMPLETE_PREFIX COLON ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1051:4: COLON
            {
            COLON688=(Token)match(input,COLON,FOLLOW_COLON_in_incomplete_prefix5803);  
            stream_COLON.add(COLON688);


            // AST REWRITE
            // elements: COLON
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1051:10: -> ^( INCOMPLETE_PREFIX COLON )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1051:13: ^( INCOMPLETE_PREFIX COLON )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(INCOMPLETE_PREFIX, "INCOMPLETE_PREFIX")
                , root_1);

                adaptor.addChild(root_1, 
                stream_COLON.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "incomplete_prefix"


    public static class typedef_struct_declaration_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_struct_declaration_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1058:1: typedef_struct_declaration_wrapper : typedef_struct_declaration -> ^( TYPEDEF_STRUCT typedef_struct_declaration ) ;
    public final ObjcmParser.typedef_struct_declaration_wrapper_return typedef_struct_declaration_wrapper() throws RecognitionException {
        ObjcmParser.typedef_struct_declaration_wrapper_return retval = new ObjcmParser.typedef_struct_declaration_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typedef_struct_declaration_return typedef_struct_declaration689 =null;


        RewriteRuleSubtreeStream stream_typedef_struct_declaration=new RewriteRuleSubtreeStream(adaptor,"rule typedef_struct_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1059:2: ( typedef_struct_declaration -> ^( TYPEDEF_STRUCT typedef_struct_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1059:4: typedef_struct_declaration
            {
            pushFollow(FOLLOW_typedef_struct_declaration_in_typedef_struct_declaration_wrapper5825);
            typedef_struct_declaration689=typedef_struct_declaration();

            state._fsp--;

            stream_typedef_struct_declaration.add(typedef_struct_declaration689.getTree());

            // AST REWRITE
            // elements: typedef_struct_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1059:31: -> ^( TYPEDEF_STRUCT typedef_struct_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1059:34: ^( TYPEDEF_STRUCT typedef_struct_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPEDEF_STRUCT, "TYPEDEF_STRUCT")
                , root_1);

                adaptor.addChild(root_1, stream_typedef_struct_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_struct_declaration_wrapper"


    public static class typedef_struct_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_struct_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1063:1: typedef_struct_declaration : STRUCT_PREFIX ( name )? L_FBR ( typedef_struct_body )+ R_FBR ( name )? ( SEMICOLON )? ;
    public final ObjcmParser.typedef_struct_declaration_return typedef_struct_declaration() throws RecognitionException {
        ObjcmParser.typedef_struct_declaration_return retval = new ObjcmParser.typedef_struct_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STRUCT_PREFIX690=null;
        Token L_FBR692=null;
        Token R_FBR694=null;
        Token SEMICOLON696=null;
        ObjcmParser.name_return name691 =null;

        ObjcmParser.typedef_struct_body_return typedef_struct_body693 =null;

        ObjcmParser.name_return name695 =null;


        Object STRUCT_PREFIX690_tree=null;
        Object L_FBR692_tree=null;
        Object R_FBR694_tree=null;
        Object SEMICOLON696_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1064:2: ( STRUCT_PREFIX ( name )? L_FBR ( typedef_struct_body )+ R_FBR ( name )? ( SEMICOLON )? )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1064:4: STRUCT_PREFIX ( name )? L_FBR ( typedef_struct_body )+ R_FBR ( name )? ( SEMICOLON )?
            {
            root_0 = (Object)adaptor.nil();


            STRUCT_PREFIX690=(Token)match(input,STRUCT_PREFIX,FOLLOW_STRUCT_PREFIX_in_typedef_struct_declaration5846); 
            STRUCT_PREFIX690_tree = 
            (Object)adaptor.create(STRUCT_PREFIX690)
            ;
            adaptor.addChild(root_0, STRUCT_PREFIX690_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1064:18: ( name )?
            int alt191=2;
            int LA191_0 = input.LA(1);

            if ( (LA191_0==ID||LA191_0==191||LA191_0==194||LA191_0==202||LA191_0==205) ) {
                alt191=1;
            }
            switch (alt191) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1064:18: name
                    {
                    pushFollow(FOLLOW_name_in_typedef_struct_declaration5848);
                    name691=name();

                    state._fsp--;

                    adaptor.addChild(root_0, name691.getTree());

                    }
                    break;

            }


            L_FBR692=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_typedef_struct_declaration5852); 
            L_FBR692_tree = 
            (Object)adaptor.create(L_FBR692)
            ;
            adaptor.addChild(root_0, L_FBR692_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1066:3: ( typedef_struct_body )+
            int cnt192=0;
            loop192:
            do {
                int alt192=2;
                int LA192_0 = input.LA(1);

                if ( (LA192_0==ID||LA192_0==VOID||LA192_0==210) ) {
                    alt192=1;
                }


                switch (alt192) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1066:3: typedef_struct_body
            	    {
            	    pushFollow(FOLLOW_typedef_struct_body_in_typedef_struct_declaration5857);
            	    typedef_struct_body693=typedef_struct_body();

            	    state._fsp--;

            	    adaptor.addChild(root_0, typedef_struct_body693.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt192 >= 1 ) break loop192;
                        EarlyExitException eee =
                            new EarlyExitException(192, input);
                        throw eee;
                }
                cnt192++;
            } while (true);


            R_FBR694=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_typedef_struct_declaration5861); 
            R_FBR694_tree = 
            (Object)adaptor.create(R_FBR694)
            ;
            adaptor.addChild(root_0, R_FBR694_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1067:9: ( name )?
            int alt193=2;
            int LA193_0 = input.LA(1);

            if ( (LA193_0==ID) ) {
                int LA193_1 = input.LA(2);

                if ( (LA193_1==EOF||LA193_1==CONST_PREFIX||LA193_1==ENUM_PREFIX||LA193_1==L_MINUS||LA193_1==L_PLUS||LA193_1==SEMICOLON||LA193_1==STATIC_PREFIX||LA193_1==STRUCT_PREFIX||LA193_1==VOID||LA193_1==176||(LA193_1 >= 178 && LA193_1 <= 179)||LA193_1==185||LA193_1==198||LA193_1==208||LA193_1==210) ) {
                    alt193=1;
                }
                else if ( (LA193_1==ID) ) {
                    int LA193_23 = input.LA(3);

                    if ( (LA193_23==L_KBR) ) {
                        int LA193_38 = input.LA(4);

                        if ( (LA193_38==R_KBR) ) {
                            alt193=1;
                        }
                    }
                    else if ( (LA193_23==ASTERISK||LA193_23==ID||LA193_23==L_LESS||LA193_23==191||LA193_23==194||LA193_23==202||LA193_23==205) ) {
                        alt193=1;
                    }
                }
            }
            else if ( (LA193_0==191||LA193_0==194||LA193_0==202||LA193_0==205) ) {
                alt193=1;
            }
            switch (alt193) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1067:9: name
                    {
                    pushFollow(FOLLOW_name_in_typedef_struct_declaration5864);
                    name695=name();

                    state._fsp--;

                    adaptor.addChild(root_0, name695.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1067:15: ( SEMICOLON )?
            int alt194=2;
            int LA194_0 = input.LA(1);

            if ( (LA194_0==SEMICOLON) ) {
                alt194=1;
            }
            switch (alt194) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1067:15: SEMICOLON
                    {
                    SEMICOLON696=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_typedef_struct_declaration5867); 
                    SEMICOLON696_tree = 
                    (Object)adaptor.create(SEMICOLON696)
                    ;
                    adaptor.addChild(root_0, SEMICOLON696_tree);


                    }
                    break;

            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_struct_declaration"


    public static class typedef_struct_body_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_struct_body"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1070:1: typedef_struct_body : typedef_struct_declaration_element_wrapper ;
    public final ObjcmParser.typedef_struct_body_return typedef_struct_body() throws RecognitionException {
        ObjcmParser.typedef_struct_body_return retval = new ObjcmParser.typedef_struct_body_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typedef_struct_declaration_element_wrapper_return typedef_struct_declaration_element_wrapper697 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1071:2: ( typedef_struct_declaration_element_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1071:4: typedef_struct_declaration_element_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_typedef_struct_declaration_element_wrapper_in_typedef_struct_body5880);
            typedef_struct_declaration_element_wrapper697=typedef_struct_declaration_element_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, typedef_struct_declaration_element_wrapper697.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_struct_body"


    public static class typedef_struct_declaration_element_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_struct_declaration_element_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1074:1: typedef_struct_declaration_element_wrapper : struct_field -> ^( STRUCT_FIELD struct_field ) ;
    public final ObjcmParser.typedef_struct_declaration_element_wrapper_return typedef_struct_declaration_element_wrapper() throws RecognitionException {
        ObjcmParser.typedef_struct_declaration_element_wrapper_return retval = new ObjcmParser.typedef_struct_declaration_element_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.struct_field_return struct_field698 =null;


        RewriteRuleSubtreeStream stream_struct_field=new RewriteRuleSubtreeStream(adaptor,"rule struct_field");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1075:2: ( struct_field -> ^( STRUCT_FIELD struct_field ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1075:4: struct_field
            {
            pushFollow(FOLLOW_struct_field_in_typedef_struct_declaration_element_wrapper5892);
            struct_field698=struct_field();

            state._fsp--;

            stream_struct_field.add(struct_field698.getTree());

            // AST REWRITE
            // elements: struct_field
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1075:17: -> ^( STRUCT_FIELD struct_field )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1075:20: ^( STRUCT_FIELD struct_field )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(STRUCT_FIELD, "STRUCT_FIELD")
                , root_1);

                adaptor.addChild(root_1, stream_struct_field.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_struct_declaration_element_wrapper"


    public static class struct_field_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "struct_field"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1077:1: struct_field : field_type name ( COMMA name )* SEMICOLON ;
    public final ObjcmParser.struct_field_return struct_field() throws RecognitionException {
        ObjcmParser.struct_field_return retval = new ObjcmParser.struct_field_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token COMMA701=null;
        Token SEMICOLON703=null;
        ObjcmParser.field_type_return field_type699 =null;

        ObjcmParser.name_return name700 =null;

        ObjcmParser.name_return name702 =null;


        Object COMMA701_tree=null;
        Object SEMICOLON703_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1078:2: ( field_type name ( COMMA name )* SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1078:4: field_type name ( COMMA name )* SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_type_in_struct_field5910);
            field_type699=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type699.getTree());

            pushFollow(FOLLOW_name_in_struct_field5912);
            name700=name();

            state._fsp--;

            adaptor.addChild(root_0, name700.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1078:21: ( COMMA name )*
            loop195:
            do {
                int alt195=2;
                int LA195_0 = input.LA(1);

                if ( (LA195_0==COMMA) ) {
                    alt195=1;
                }


                switch (alt195) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1078:22: COMMA name
            	    {
            	    COMMA701=(Token)match(input,COMMA,FOLLOW_COMMA_in_struct_field5916); 
            	    COMMA701_tree = 
            	    (Object)adaptor.create(COMMA701)
            	    ;
            	    adaptor.addChild(root_0, COMMA701_tree);


            	    pushFollow(FOLLOW_name_in_struct_field5919);
            	    name702=name();

            	    state._fsp--;

            	    adaptor.addChild(root_0, name702.getTree());

            	    }
            	    break;

            	default :
            	    break loop195;
                }
            } while (true);


            SEMICOLON703=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_struct_field5923); 
            SEMICOLON703_tree = 
            (Object)adaptor.create(SEMICOLON703)
            ;
            adaptor.addChild(root_0, SEMICOLON703_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "struct_field"


    public static class typedef_declaration_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_declaration_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1085:1: typedef_declaration_wrapper : typedef_declaration -> ^( TYPEDEF typedef_declaration ) ;
    public final ObjcmParser.typedef_declaration_wrapper_return typedef_declaration_wrapper() throws RecognitionException {
        ObjcmParser.typedef_declaration_wrapper_return retval = new ObjcmParser.typedef_declaration_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typedef_declaration_return typedef_declaration704 =null;


        RewriteRuleSubtreeStream stream_typedef_declaration=new RewriteRuleSubtreeStream(adaptor,"rule typedef_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1086:2: ( typedef_declaration -> ^( TYPEDEF typedef_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1086:4: typedef_declaration
            {
            pushFollow(FOLLOW_typedef_declaration_in_typedef_declaration_wrapper5939);
            typedef_declaration704=typedef_declaration();

            state._fsp--;

            stream_typedef_declaration.add(typedef_declaration704.getTree());

            // AST REWRITE
            // elements: typedef_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1086:24: -> ^( TYPEDEF typedef_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1086:27: ^( TYPEDEF typedef_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPEDEF, "TYPEDEF")
                , root_1);

                adaptor.addChild(root_1, stream_typedef_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_declaration_wrapper"


    public static class enum_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "enum_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1089:1: enum_declaration : typedef_declaration -> ^( ENUM typedef_declaration ) ;
    public final ObjcmParser.enum_declaration_return enum_declaration() throws RecognitionException {
        ObjcmParser.enum_declaration_return retval = new ObjcmParser.enum_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typedef_declaration_return typedef_declaration705 =null;


        RewriteRuleSubtreeStream stream_typedef_declaration=new RewriteRuleSubtreeStream(adaptor,"rule typedef_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1090:2: ( typedef_declaration -> ^( ENUM typedef_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1090:4: typedef_declaration
            {
            pushFollow(FOLLOW_typedef_declaration_in_enum_declaration5959);
            typedef_declaration705=typedef_declaration();

            state._fsp--;

            stream_typedef_declaration.add(typedef_declaration705.getTree());

            // AST REWRITE
            // elements: typedef_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1090:24: -> ^( ENUM typedef_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1090:27: ^( ENUM typedef_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(ENUM, "ENUM")
                , root_1);

                adaptor.addChild(root_1, stream_typedef_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "enum_declaration"


    public static class typedef_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1092:1: typedef_declaration : ENUM_PREFIX ( name )? L_FBR typedef_declaration_element_wrapper ( COMMA typedef_declaration_element_wrapper )* R_FBR ( name )? SEMICOLON ;
    public final ObjcmParser.typedef_declaration_return typedef_declaration() throws RecognitionException {
        ObjcmParser.typedef_declaration_return retval = new ObjcmParser.typedef_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ENUM_PREFIX706=null;
        Token L_FBR708=null;
        Token COMMA710=null;
        Token R_FBR712=null;
        Token SEMICOLON714=null;
        ObjcmParser.name_return name707 =null;

        ObjcmParser.typedef_declaration_element_wrapper_return typedef_declaration_element_wrapper709 =null;

        ObjcmParser.typedef_declaration_element_wrapper_return typedef_declaration_element_wrapper711 =null;

        ObjcmParser.name_return name713 =null;


        Object ENUM_PREFIX706_tree=null;
        Object L_FBR708_tree=null;
        Object COMMA710_tree=null;
        Object R_FBR712_tree=null;
        Object SEMICOLON714_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:2: ( ENUM_PREFIX ( name )? L_FBR typedef_declaration_element_wrapper ( COMMA typedef_declaration_element_wrapper )* R_FBR ( name )? SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:5: ENUM_PREFIX ( name )? L_FBR typedef_declaration_element_wrapper ( COMMA typedef_declaration_element_wrapper )* R_FBR ( name )? SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            ENUM_PREFIX706=(Token)match(input,ENUM_PREFIX,FOLLOW_ENUM_PREFIX_in_typedef_declaration5979); 
            ENUM_PREFIX706_tree = 
            (Object)adaptor.create(ENUM_PREFIX706)
            ;
            adaptor.addChild(root_0, ENUM_PREFIX706_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:17: ( name )?
            int alt196=2;
            int LA196_0 = input.LA(1);

            if ( (LA196_0==ID||LA196_0==191||LA196_0==194||LA196_0==202||LA196_0==205) ) {
                alt196=1;
            }
            switch (alt196) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:17: name
                    {
                    pushFollow(FOLLOW_name_in_typedef_declaration5981);
                    name707=name();

                    state._fsp--;

                    adaptor.addChild(root_0, name707.getTree());

                    }
                    break;

            }


            L_FBR708=(Token)match(input,L_FBR,FOLLOW_L_FBR_in_typedef_declaration5984); 
            L_FBR708_tree = 
            (Object)adaptor.create(L_FBR708)
            ;
            adaptor.addChild(root_0, L_FBR708_tree);


            pushFollow(FOLLOW_typedef_declaration_element_wrapper_in_typedef_declaration5987);
            typedef_declaration_element_wrapper709=typedef_declaration_element_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, typedef_declaration_element_wrapper709.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:67: ( COMMA typedef_declaration_element_wrapper )*
            loop197:
            do {
                int alt197=2;
                int LA197_0 = input.LA(1);

                if ( (LA197_0==COMMA) ) {
                    alt197=1;
                }


                switch (alt197) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:68: COMMA typedef_declaration_element_wrapper
            	    {
            	    COMMA710=(Token)match(input,COMMA,FOLLOW_COMMA_in_typedef_declaration5991); 
            	    COMMA710_tree = 
            	    (Object)adaptor.create(COMMA710)
            	    ;
            	    adaptor.addChild(root_0, COMMA710_tree);


            	    pushFollow(FOLLOW_typedef_declaration_element_wrapper_in_typedef_declaration5994);
            	    typedef_declaration_element_wrapper711=typedef_declaration_element_wrapper();

            	    state._fsp--;

            	    adaptor.addChild(root_0, typedef_declaration_element_wrapper711.getTree());

            	    }
            	    break;

            	default :
            	    break loop197;
                }
            } while (true);


            R_FBR712=(Token)match(input,R_FBR,FOLLOW_R_FBR_in_typedef_declaration5998); 
            R_FBR712_tree = 
            (Object)adaptor.create(R_FBR712)
            ;
            adaptor.addChild(root_0, R_FBR712_tree);


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:120: ( name )?
            int alt198=2;
            int LA198_0 = input.LA(1);

            if ( (LA198_0==ID||LA198_0==191||LA198_0==194||LA198_0==202||LA198_0==205) ) {
                alt198=1;
            }
            switch (alt198) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1093:120: name
                    {
                    pushFollow(FOLLOW_name_in_typedef_declaration6001);
                    name713=name();

                    state._fsp--;

                    adaptor.addChild(root_0, name713.getTree());

                    }
                    break;

            }


            SEMICOLON714=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_typedef_declaration6004); 
            SEMICOLON714_tree = 
            (Object)adaptor.create(SEMICOLON714)
            ;
            adaptor.addChild(root_0, SEMICOLON714_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_declaration"


    public static class typedef_declaration_element_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_declaration_element_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1095:1: typedef_declaration_element_wrapper : typedef_declaration_element -> ^( TYPEDEF_ELEMENT typedef_declaration_element ) ;
    public final ObjcmParser.typedef_declaration_element_wrapper_return typedef_declaration_element_wrapper() throws RecognitionException {
        ObjcmParser.typedef_declaration_element_wrapper_return retval = new ObjcmParser.typedef_declaration_element_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.typedef_declaration_element_return typedef_declaration_element715 =null;


        RewriteRuleSubtreeStream stream_typedef_declaration_element=new RewriteRuleSubtreeStream(adaptor,"rule typedef_declaration_element");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1096:2: ( typedef_declaration_element -> ^( TYPEDEF_ELEMENT typedef_declaration_element ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1096:4: typedef_declaration_element
            {
            pushFollow(FOLLOW_typedef_declaration_element_in_typedef_declaration_element_wrapper6014);
            typedef_declaration_element715=typedef_declaration_element();

            state._fsp--;

            stream_typedef_declaration_element.add(typedef_declaration_element715.getTree());

            // AST REWRITE
            // elements: typedef_declaration_element
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1096:32: -> ^( TYPEDEF_ELEMENT typedef_declaration_element )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1096:35: ^( TYPEDEF_ELEMENT typedef_declaration_element )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPEDEF_ELEMENT, "TYPEDEF_ELEMENT")
                , root_1);

                adaptor.addChild(root_1, stream_typedef_declaration_element.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_declaration_element_wrapper"


    public static class typedef_declaration_element_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "typedef_declaration_element"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1099:1: typedef_declaration_element : ( ID ( L_EQ ( ID | NUMBER ) )? | NUMBER L_EQ NUMBER );
    public final ObjcmParser.typedef_declaration_element_return typedef_declaration_element() throws RecognitionException {
        ObjcmParser.typedef_declaration_element_return retval = new ObjcmParser.typedef_declaration_element_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID716=null;
        Token L_EQ717=null;
        Token set718=null;
        Token NUMBER719=null;
        Token L_EQ720=null;
        Token NUMBER721=null;

        Object ID716_tree=null;
        Object L_EQ717_tree=null;
        Object set718_tree=null;
        Object NUMBER719_tree=null;
        Object L_EQ720_tree=null;
        Object NUMBER721_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1100:2: ( ID ( L_EQ ( ID | NUMBER ) )? | NUMBER L_EQ NUMBER )
            int alt200=2;
            int LA200_0 = input.LA(1);

            if ( (LA200_0==ID) ) {
                alt200=1;
            }
            else if ( (LA200_0==NUMBER) ) {
                alt200=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 200, 0, input);

                throw nvae;

            }
            switch (alt200) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1100:4: ID ( L_EQ ( ID | NUMBER ) )?
                    {
                    root_0 = (Object)adaptor.nil();


                    ID716=(Token)match(input,ID,FOLLOW_ID_in_typedef_declaration_element6033); 
                    ID716_tree = 
                    (Object)adaptor.create(ID716)
                    ;
                    adaptor.addChild(root_0, ID716_tree);


                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1100:8: ( L_EQ ( ID | NUMBER ) )?
                    int alt199=2;
                    int LA199_0 = input.LA(1);

                    if ( (LA199_0==L_EQ) ) {
                        alt199=1;
                    }
                    switch (alt199) {
                        case 1 :
                            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1100:9: L_EQ ( ID | NUMBER )
                            {
                            L_EQ717=(Token)match(input,L_EQ,FOLLOW_L_EQ_in_typedef_declaration_element6037); 
                            L_EQ717_tree = 
                            (Object)adaptor.create(L_EQ717)
                            ;
                            adaptor.addChild(root_0, L_EQ717_tree);


                            set718=(Token)input.LT(1);

                            if ( input.LA(1)==ID||input.LA(1)==NUMBER ) {
                                input.consume();
                                adaptor.addChild(root_0, 
                                (Object)adaptor.create(set718)
                                );
                                state.errorRecovery=false;
                            }
                            else {
                                MismatchedSetException mse = new MismatchedSetException(null,input);
                                throw mse;
                            }


                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1101:4: NUMBER L_EQ NUMBER
                    {
                    root_0 = (Object)adaptor.nil();


                    NUMBER719=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_typedef_declaration_element6052); 
                    NUMBER719_tree = 
                    (Object)adaptor.create(NUMBER719)
                    ;
                    adaptor.addChild(root_0, NUMBER719_tree);


                    L_EQ720=(Token)match(input,L_EQ,FOLLOW_L_EQ_in_typedef_declaration_element6054); 
                    L_EQ720_tree = 
                    (Object)adaptor.create(L_EQ720)
                    ;
                    adaptor.addChild(root_0, L_EQ720_tree);


                    NUMBER721=(Token)match(input,NUMBER,FOLLOW_NUMBER_in_typedef_declaration_element6056); 
                    NUMBER721_tree = 
                    (Object)adaptor.create(NUMBER721)
                    ;
                    adaptor.addChild(root_0, NUMBER721_tree);


                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "typedef_declaration_element"


    public static class field_declaration_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_declaration_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1108:1: field_declaration_wrapper : field_declaration -> ^( FIELD field_declaration ) ;
    public final ObjcmParser.field_declaration_wrapper_return field_declaration_wrapper() throws RecognitionException {
        ObjcmParser.field_declaration_wrapper_return retval = new ObjcmParser.field_declaration_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_declaration_return field_declaration722 =null;


        RewriteRuleSubtreeStream stream_field_declaration=new RewriteRuleSubtreeStream(adaptor,"rule field_declaration");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1109:2: ( field_declaration -> ^( FIELD field_declaration ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1109:4: field_declaration
            {
            pushFollow(FOLLOW_field_declaration_in_field_declaration_wrapper6070);
            field_declaration722=field_declaration();

            state._fsp--;

            stream_field_declaration.add(field_declaration722.getTree());

            // AST REWRITE
            // elements: field_declaration
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1109:22: -> ^( FIELD field_declaration )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1109:25: ^( FIELD field_declaration )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(FIELD, "FIELD")
                , root_1);

                adaptor.addChild(root_1, stream_field_declaration.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_declaration_wrapper"


    public static class field_declaration_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_declaration"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1111:1: field_declaration : field_modifier_wrapper field_type name field_declaration_end ;
    public final ObjcmParser.field_declaration_return field_declaration() throws RecognitionException {
        ObjcmParser.field_declaration_return retval = new ObjcmParser.field_declaration_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_modifier_wrapper_return field_modifier_wrapper723 =null;

        ObjcmParser.field_type_return field_type724 =null;

        ObjcmParser.name_return name725 =null;

        ObjcmParser.field_declaration_end_return field_declaration_end726 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1112:2: ( field_modifier_wrapper field_type name field_declaration_end )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1112:4: field_modifier_wrapper field_type name field_declaration_end
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_field_modifier_wrapper_in_field_declaration6087);
            field_modifier_wrapper723=field_modifier_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, field_modifier_wrapper723.getTree());

            pushFollow(FOLLOW_field_type_in_field_declaration6090);
            field_type724=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type724.getTree());

            pushFollow(FOLLOW_name_in_field_declaration6092);
            name725=name();

            state._fsp--;

            adaptor.addChild(root_0, name725.getTree());

            pushFollow(FOLLOW_field_declaration_end_in_field_declaration6094);
            field_declaration_end726=field_declaration_end();

            state._fsp--;

            adaptor.addChild(root_0, field_declaration_end726.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_declaration"


    public static class field_declaration_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_declaration_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1114:1: field_declaration_end : ( expr_assign_wrapper )? SEMICOLON ;
    public final ObjcmParser.field_declaration_end_return field_declaration_end() throws RecognitionException {
        ObjcmParser.field_declaration_end_return retval = new ObjcmParser.field_declaration_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON728=null;
        ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper727 =null;


        Object SEMICOLON728_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1115:2: ( ( expr_assign_wrapper )? SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1115:5: ( expr_assign_wrapper )? SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1115:5: ( expr_assign_wrapper )?
            int alt201=2;
            int LA201_0 = input.LA(1);

            if ( (LA201_0==L_AND_EQ||(LA201_0 >= L_DIV_EQ && LA201_0 <= L_EQ)||LA201_0==L_LEFT_EQ||LA201_0==L_MINUS_EQ||LA201_0==L_MULT_EQ||LA201_0==L_OR_EQ||LA201_0==L_PERC_EQ||LA201_0==L_PLUS_EQ||LA201_0==L_RIGHT_EQ||LA201_0==L_XOR_EQ) ) {
                alt201=1;
            }
            switch (alt201) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1115:5: expr_assign_wrapper
                    {
                    pushFollow(FOLLOW_expr_assign_wrapper_in_field_declaration_end6105);
                    expr_assign_wrapper727=expr_assign_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_assign_wrapper727.getTree());

                    }
                    break;

            }


            SEMICOLON728=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_field_declaration_end6108); 
            SEMICOLON728_tree = 
            (Object)adaptor.create(SEMICOLON728)
            ;
            adaptor.addChild(root_0, SEMICOLON728_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_declaration_end"


    public static class type_start_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_start_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1117:1: type_start_wrapper : type_start -> ^( M_TYPE_START type_start ) ;
    public final ObjcmParser.type_start_wrapper_return type_start_wrapper() throws RecognitionException {
        ObjcmParser.type_start_wrapper_return retval = new ObjcmParser.type_start_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.type_start_return type_start729 =null;


        RewriteRuleSubtreeStream stream_type_start=new RewriteRuleSubtreeStream(adaptor,"rule type_start");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1118:2: ( type_start -> ^( M_TYPE_START type_start ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1118:4: type_start
            {
            pushFollow(FOLLOW_type_start_in_type_start_wrapper6118);
            type_start729=type_start();

            state._fsp--;

            stream_type_start.add(type_start729.getTree());

            // AST REWRITE
            // elements: type_start
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1118:15: -> ^( M_TYPE_START type_start )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1118:18: ^( M_TYPE_START type_start )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(M_TYPE_START, "M_TYPE_START")
                , root_1);

                adaptor.addChild(root_1, stream_type_start.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_start_wrapper"


    public static class type_start_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_start"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1120:1: type_start : ( CONST_PREFIX )? field_type name ( L_KBR R_KBR )? type_end ;
    public final ObjcmParser.type_start_return type_start() throws RecognitionException {
        ObjcmParser.type_start_return retval = new ObjcmParser.type_start_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token CONST_PREFIX730=null;
        Token L_KBR733=null;
        Token R_KBR734=null;
        ObjcmParser.field_type_return field_type731 =null;

        ObjcmParser.name_return name732 =null;

        ObjcmParser.type_end_return type_end735 =null;


        Object CONST_PREFIX730_tree=null;
        Object L_KBR733_tree=null;
        Object R_KBR734_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:2: ( ( CONST_PREFIX )? field_type name ( L_KBR R_KBR )? type_end )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:4: ( CONST_PREFIX )? field_type name ( L_KBR R_KBR )? type_end
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:4: ( CONST_PREFIX )?
            int alt202=2;
            int LA202_0 = input.LA(1);

            if ( (LA202_0==CONST_PREFIX) ) {
                alt202=1;
            }
            switch (alt202) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:4: CONST_PREFIX
                    {
                    CONST_PREFIX730=(Token)match(input,CONST_PREFIX,FOLLOW_CONST_PREFIX_in_type_start6135); 
                    CONST_PREFIX730_tree = 
                    (Object)adaptor.create(CONST_PREFIX730)
                    ;
                    adaptor.addChild(root_0, CONST_PREFIX730_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_field_type_in_type_start6138);
            field_type731=field_type();

            state._fsp--;

            adaptor.addChild(root_0, field_type731.getTree());

            pushFollow(FOLLOW_name_in_type_start6140);
            name732=name();

            state._fsp--;

            adaptor.addChild(root_0, name732.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:34: ( L_KBR R_KBR )?
            int alt203=2;
            int LA203_0 = input.LA(1);

            if ( (LA203_0==L_KBR) ) {
                alt203=1;
            }
            switch (alt203) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1121:35: L_KBR R_KBR
                    {
                    L_KBR733=(Token)match(input,L_KBR,FOLLOW_L_KBR_in_type_start6143); 
                    L_KBR733_tree = 
                    (Object)adaptor.create(L_KBR733)
                    ;
                    adaptor.addChild(root_0, L_KBR733_tree);


                    R_KBR734=(Token)match(input,R_KBR,FOLLOW_R_KBR_in_type_start6145); 
                    R_KBR734_tree = 
                    (Object)adaptor.create(R_KBR734)
                    ;
                    adaptor.addChild(root_0, R_KBR734_tree);


                    }
                    break;

            }


            pushFollow(FOLLOW_type_end_in_type_start6149);
            type_end735=type_end();

            state._fsp--;

            adaptor.addChild(root_0, type_end735.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_start"


    public static class type_end_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "type_end"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1123:1: type_end : ( field_declaration4 -> ^( FIELD field_declaration4 ) | method_declaration4 -> ^( STATIC_METHOD method_declaration4 ) );
    public final ObjcmParser.type_end_return type_end() throws RecognitionException {
        ObjcmParser.type_end_return retval = new ObjcmParser.type_end_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_declaration4_return field_declaration4736 =null;

        ObjcmParser.method_declaration4_return method_declaration4737 =null;


        RewriteRuleSubtreeStream stream_method_declaration4=new RewriteRuleSubtreeStream(adaptor,"rule method_declaration4");
        RewriteRuleSubtreeStream stream_field_declaration4=new RewriteRuleSubtreeStream(adaptor,"rule field_declaration4");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1123:9: ( field_declaration4 -> ^( FIELD field_declaration4 ) | method_declaration4 -> ^( STATIC_METHOD method_declaration4 ) )
            int alt204=2;
            int LA204_0 = input.LA(1);

            if ( (LA204_0==L_AND_EQ||(LA204_0 >= L_DIV_EQ && LA204_0 <= L_EQ)||LA204_0==L_LEFT_EQ||LA204_0==L_MINUS_EQ||LA204_0==L_MULT_EQ||LA204_0==L_OR_EQ||LA204_0==L_PERC_EQ||LA204_0==L_PLUS_EQ||LA204_0==L_RIGHT_EQ||LA204_0==L_XOR_EQ||LA204_0==SEMICOLON) ) {
                alt204=1;
            }
            else if ( (LA204_0==L_BR) ) {
                alt204=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 204, 0, input);

                throw nvae;

            }
            switch (alt204) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1123:11: field_declaration4
                    {
                    pushFollow(FOLLOW_field_declaration4_in_type_end6157);
                    field_declaration4736=field_declaration4();

                    state._fsp--;

                    stream_field_declaration4.add(field_declaration4736.getTree());

                    // AST REWRITE
                    // elements: field_declaration4
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1123:30: -> ^( FIELD field_declaration4 )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1123:33: ^( FIELD field_declaration4 )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(FIELD, "FIELD")
                        , root_1);

                        adaptor.addChild(root_1, stream_field_declaration4.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1124:4: method_declaration4
                    {
                    pushFollow(FOLLOW_method_declaration4_in_type_end6170);
                    method_declaration4737=method_declaration4();

                    state._fsp--;

                    stream_method_declaration4.add(method_declaration4737.getTree());

                    // AST REWRITE
                    // elements: method_declaration4
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 1124:24: -> ^( STATIC_METHOD method_declaration4 )
                    {
                        // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1124:27: ^( STATIC_METHOD method_declaration4 )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(STATIC_METHOD, "STATIC_METHOD")
                        , root_1);

                        adaptor.addChild(root_1, stream_method_declaration4.nextTree());

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "type_end"


    public static class field_declaration4_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_declaration4"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1127:1: field_declaration4 : ( expr_assign_wrapper )? SEMICOLON ;
    public final ObjcmParser.field_declaration4_return field_declaration4() throws RecognitionException {
        ObjcmParser.field_declaration4_return retval = new ObjcmParser.field_declaration4_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token SEMICOLON739=null;
        ObjcmParser.expr_assign_wrapper_return expr_assign_wrapper738 =null;


        Object SEMICOLON739_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1128:2: ( ( expr_assign_wrapper )? SEMICOLON )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1128:5: ( expr_assign_wrapper )? SEMICOLON
            {
            root_0 = (Object)adaptor.nil();


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1128:5: ( expr_assign_wrapper )?
            int alt205=2;
            int LA205_0 = input.LA(1);

            if ( (LA205_0==L_AND_EQ||(LA205_0 >= L_DIV_EQ && LA205_0 <= L_EQ)||LA205_0==L_LEFT_EQ||LA205_0==L_MINUS_EQ||LA205_0==L_MULT_EQ||LA205_0==L_OR_EQ||LA205_0==L_PERC_EQ||LA205_0==L_PLUS_EQ||LA205_0==L_RIGHT_EQ||LA205_0==L_XOR_EQ) ) {
                alt205=1;
            }
            switch (alt205) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1128:5: expr_assign_wrapper
                    {
                    pushFollow(FOLLOW_expr_assign_wrapper_in_field_declaration46192);
                    expr_assign_wrapper738=expr_assign_wrapper();

                    state._fsp--;

                    adaptor.addChild(root_0, expr_assign_wrapper738.getTree());

                    }
                    break;

            }


            SEMICOLON739=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_field_declaration46195); 
            SEMICOLON739_tree = 
            (Object)adaptor.create(SEMICOLON739)
            ;
            adaptor.addChild(root_0, SEMICOLON739_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_declaration4"


    public static class method_declaration4_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "method_declaration4"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1131:1: method_declaration4 : method_params2 block_wrapper ;
    public final ObjcmParser.method_declaration4_return method_declaration4() throws RecognitionException {
        ObjcmParser.method_declaration4_return retval = new ObjcmParser.method_declaration4_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.method_params2_return method_params2740 =null;

        ObjcmParser.block_wrapper_return block_wrapper741 =null;



        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1132:2: ( method_params2 block_wrapper )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1132:5: method_params2 block_wrapper
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_method_params2_in_method_declaration46208);
            method_params2740=method_params2();

            state._fsp--;

            adaptor.addChild(root_0, method_params2740.getTree());

            pushFollow(FOLLOW_block_wrapper_in_method_declaration46213);
            block_wrapper741=block_wrapper();

            state._fsp--;

            adaptor.addChild(root_0, block_wrapper741.getTree());

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "method_declaration4"


    public static class field_modifier_wrapper_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_modifier_wrapper"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1136:1: field_modifier_wrapper : field_modifier -> ^( MODIFIER field_modifier ) ;
    public final ObjcmParser.field_modifier_wrapper_return field_modifier_wrapper() throws RecognitionException {
        ObjcmParser.field_modifier_wrapper_return retval = new ObjcmParser.field_modifier_wrapper_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_modifier_return field_modifier742 =null;


        RewriteRuleSubtreeStream stream_field_modifier=new RewriteRuleSubtreeStream(adaptor,"rule field_modifier");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1137:2: ( field_modifier -> ^( MODIFIER field_modifier ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1137:4: field_modifier
            {
            pushFollow(FOLLOW_field_modifier_in_field_modifier_wrapper6225);
            field_modifier742=field_modifier();

            state._fsp--;

            stream_field_modifier.add(field_modifier742.getTree());

            // AST REWRITE
            // elements: field_modifier
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1137:19: -> ^( MODIFIER field_modifier )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1137:22: ^( MODIFIER field_modifier )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(MODIFIER, "MODIFIER")
                , root_1);

                adaptor.addChild(root_1, stream_field_modifier.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_modifier_wrapper"


    public static class field_modifier_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_modifier"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1139:1: field_modifier : 'extern' ;
    public final ObjcmParser.field_modifier_return field_modifier() throws RecognitionException {
        ObjcmParser.field_modifier_return retval = new ObjcmParser.field_modifier_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal743=null;

        Object string_literal743_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1140:2: ( 'extern' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1140:4: 'extern'
            {
            root_0 = (Object)adaptor.nil();


            string_literal743=(Token)match(input,198,FOLLOW_198_in_field_modifier6243); 
            string_literal743_tree = 
            (Object)adaptor.create(string_literal743)
            ;
            adaptor.addChild(root_0, string_literal743_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_modifier"


    public static class field_type_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_type"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1143:1: field_type : field_type_internal -> ^( TYPE field_type_internal ) ;
    public final ObjcmParser.field_type_return field_type() throws RecognitionException {
        ObjcmParser.field_type_return retval = new ObjcmParser.field_type_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.field_type_internal_return field_type_internal744 =null;


        RewriteRuleSubtreeStream stream_field_type_internal=new RewriteRuleSubtreeStream(adaptor,"rule field_type_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1144:2: ( field_type_internal -> ^( TYPE field_type_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1144:5: field_type_internal
            {
            pushFollow(FOLLOW_field_type_internal_in_field_type6255);
            field_type_internal744=field_type_internal();

            state._fsp--;

            stream_field_type_internal.add(field_type_internal744.getTree());

            // AST REWRITE
            // elements: field_type_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1144:25: -> ^( TYPE field_type_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1144:28: ^( TYPE field_type_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(TYPE, "TYPE")
                , root_1);

                adaptor.addChild(root_1, stream_field_type_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_type"


    public static class field_type_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "field_type_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1146:1: field_type_internal : type_internal ( generic )? ( ASTERISK )* ;
    public final ObjcmParser.field_type_internal_return field_type_internal() throws RecognitionException {
        ObjcmParser.field_type_internal_return retval = new ObjcmParser.field_type_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ASTERISK747=null;
        ObjcmParser.type_internal_return type_internal745 =null;

        ObjcmParser.generic_return generic746 =null;


        Object ASTERISK747_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:2: ( type_internal ( generic )? ( ASTERISK )* )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:4: type_internal ( generic )? ( ASTERISK )*
            {
            root_0 = (Object)adaptor.nil();


            pushFollow(FOLLOW_type_internal_in_field_type_internal6274);
            type_internal745=type_internal();

            state._fsp--;

            adaptor.addChild(root_0, type_internal745.getTree());

            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:18: ( generic )?
            int alt206=2;
            int LA206_0 = input.LA(1);

            if ( (LA206_0==L_LESS) ) {
                alt206=1;
            }
            switch (alt206) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:18: generic
                    {
                    pushFollow(FOLLOW_generic_in_field_type_internal6276);
                    generic746=generic();

                    state._fsp--;

                    adaptor.addChild(root_0, generic746.getTree());

                    }
                    break;

            }


            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:27: ( ASTERISK )*
            loop207:
            do {
                int alt207=2;
                int LA207_0 = input.LA(1);

                if ( (LA207_0==ASTERISK) ) {
                    alt207=1;
                }


                switch (alt207) {
            	case 1 :
            	    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1147:27: ASTERISK
            	    {
            	    ASTERISK747=(Token)match(input,ASTERISK,FOLLOW_ASTERISK_in_field_type_internal6279); 
            	    ASTERISK747_tree = 
            	    (Object)adaptor.create(ASTERISK747)
            	    ;
            	    adaptor.addChild(root_0, ASTERISK747_tree);


            	    }
            	    break;

            	default :
            	    break loop207;
                }
            } while (true);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "field_type_internal"


    public static class name_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "name"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1153:1: name : name_internal -> ^( NAME name_internal ) ;
    public final ObjcmParser.name_return name() throws RecognitionException {
        ObjcmParser.name_return retval = new ObjcmParser.name_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        ObjcmParser.name_internal_return name_internal748 =null;


        RewriteRuleSubtreeStream stream_name_internal=new RewriteRuleSubtreeStream(adaptor,"rule name_internal");
        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1153:6: ( name_internal -> ^( NAME name_internal ) )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1153:8: name_internal
            {
            pushFollow(FOLLOW_name_internal_in_name6292);
            name_internal748=name_internal();

            state._fsp--;

            stream_name_internal.add(name_internal748.getTree());

            // AST REWRITE
            // elements: name_internal
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 1153:22: -> ^( NAME name_internal )
            {
                // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1153:25: ^( NAME name_internal )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(NAME, "NAME")
                , root_1);

                adaptor.addChild(root_1, stream_name_internal.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "name"


    public static class name_internal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "name_internal"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1156:1: name_internal : ( ID | 'in' | property );
    public final ObjcmParser.name_internal_return name_internal() throws RecognitionException {
        ObjcmParser.name_internal_return retval = new ObjcmParser.name_internal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token ID749=null;
        Token string_literal750=null;
        ObjcmParser.property_return property751 =null;


        Object ID749_tree=null;
        Object string_literal750_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1157:2: ( ID | 'in' | property )
            int alt208=3;
            switch ( input.LA(1) ) {
            case ID:
                {
                alt208=1;
                }
                break;
            case 202:
                {
                alt208=2;
                }
                break;
            case 191:
            case 194:
            case 205:
                {
                alt208=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 208, 0, input);

                throw nvae;

            }

            switch (alt208) {
                case 1 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1157:4: ID
                    {
                    root_0 = (Object)adaptor.nil();


                    ID749=(Token)match(input,ID,FOLLOW_ID_in_name_internal6313); 
                    ID749_tree = 
                    (Object)adaptor.create(ID749)
                    ;
                    adaptor.addChild(root_0, ID749_tree);


                    }
                    break;
                case 2 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1158:5: 'in'
                    {
                    root_0 = (Object)adaptor.nil();


                    string_literal750=(Token)match(input,202,FOLLOW_202_in_name_internal6320); 
                    string_literal750_tree = 
                    (Object)adaptor.create(string_literal750)
                    ;
                    adaptor.addChild(root_0, string_literal750_tree);


                    }
                    break;
                case 3 :
                    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1159:5: property
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_property_in_name_internal6327);
                    property751=property();

                    state._fsp--;

                    adaptor.addChild(root_0, property751.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "name_internal"


    public static class string_value_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "string_value"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1162:1: string_value : STRING_LITERAL ;
    public final ObjcmParser.string_value_return string_value() throws RecognitionException {
        ObjcmParser.string_value_return retval = new ObjcmParser.string_value_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token STRING_LITERAL752=null;

        Object STRING_LITERAL752_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1163:2: ( STRING_LITERAL )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1163:4: STRING_LITERAL
            {
            root_0 = (Object)adaptor.nil();


            STRING_LITERAL752=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_string_value6338); 
            STRING_LITERAL752_tree = 
            (Object)adaptor.create(STRING_LITERAL752)
            ;
            adaptor.addChild(root_0, STRING_LITERAL752_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "string_value"


    public static class null_stmt_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "null_stmt"
    // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1165:1: null_stmt : ( 'nil' | 'Nil' );
    public final ObjcmParser.null_stmt_return null_stmt() throws RecognitionException {
        ObjcmParser.null_stmt_return retval = new ObjcmParser.null_stmt_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token set753=null;

        Object set753_tree=null;

        try {
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:1165:11: ( 'nil' | 'Nil' )
            // C:\\sandbox\\objc2j\\src\\ru\\andremoniy\\objctojavacnv\\antlr\\Objcm.g:
            {
            root_0 = (Object)adaptor.nil();


            set753=(Token)input.LT(1);

            if ( input.LA(1)==188||input.LA(1)==204 ) {
                input.consume();
                adaptor.addChild(root_0, 
                (Object)adaptor.create(set753)
                );
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "null_stmt"

    // Delegated rules


    protected DFA32 dfa32 = new DFA32(this);
    protected DFA56 dfa56 = new DFA56(this);
    protected DFA63 dfa63 = new DFA63(this);
    protected DFA81 dfa81 = new DFA81(this);
    protected DFA82 dfa82 = new DFA82(this);
    protected DFA85 dfa85 = new DFA85(this);
    protected DFA90 dfa90 = new DFA90(this);
    protected DFA102 dfa102 = new DFA102(this);
    protected DFA112 dfa112 = new DFA112(this);
    protected DFA116 dfa116 = new DFA116(this);
    protected DFA160 dfa160 = new DFA160(this);
    protected DFA187 dfa187 = new DFA187(this);
    static final String DFA32_eotS =
        "\u01ab\uffff";
    static final String DFA32_eofS =
        "\u01ab\uffff";
    static final String DFA32_minS =
        "\1\6\14\uffff\1\6\34\uffff\3\6\2\uffff\2\6\2\72\2\uffff\1\6\12\uffff"+
        "\2\6\7\uffff\2\6\2\72\15\uffff\2\6\6\uffff\2\6\2\72\15\uffff\2\6"+
        "\u0136\uffff";
    static final String DFA32_maxS =
        "\1\u00d3\14\uffff\1\u00d2\34\uffff\3\u00d2\2\uffff\2\u00d2\2\u00cd"+
        "\2\uffff\1\u00d2\12\uffff\2\u00d2\7\uffff\2\u00d2\2\u00cd\15\uffff"+
        "\2\u00d2\6\uffff\2\u00d2\2\u00cd\15\uffff\2\u00d2\u0136\uffff";
    static final String DFA32_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\24\uffff\1\7\1\10\1\11\1\12\1\13"+
        "\1\14\1\15\1\uffff\1\16\1\17\1\20\1\21\1\22\1\23\1\24\34\uffff\1"+
        "\6\31\uffff\1\6\30\uffff\1\6\1\uffff\26\6\1\uffff\34\6\14\uffff"+
        "\1\6\10\uffff\26\6\7\uffff\4\6\13\uffff\110\6\7\uffff\4\6\13\uffff"+
        "\110\6\7\uffff\4\6\13\uffff";
    static final String DFA32_specialS =
        "\u01ab\uffff}>";
    static final String[] DFA32_transitionS = {
            "\1\6\2\uffff\1\41\13\uffff\1\5\6\uffff\1\44\35\uffff\1\6\11"+
            "\uffff\1\6\2\uffff\1\6\6\uffff\1\6\4\uffff\1\6\1\uffff\1\6\4"+
            "\uffff\1\6\5\uffff\1\6\1\uffff\1\6\3\uffff\1\6\16\uffff\1\6"+
            "\16\uffff\1\47\2\uffff\1\41\1\6\2\uffff\1\3\3\uffff\3\6\2\uffff"+
            "\1\43\22\uffff\1\46\7\uffff\1\6\6\uffff\1\6\1\uffff\1\6\1\uffff"+
            "\1\2\1\1\1\6\1\uffff\1\45\1\6\2\uffff\1\6\1\uffff\1\4\1\34\1"+
            "\51\1\37\1\50\1\33\1\6\1\uffff\2\6\1\36\1\35\2\uffff\1\15\1"+
            "\40",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\46\63\uffff\1\52\154\uffff\1\46\27\uffff\1\54\2\uffff\1"+
            "\54\7\uffff\1\53\2\uffff\1\54\4\uffff\1\46",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\65\12\uffff\1\106\1\101\6\uffff\1\61\40\uffff\1\6\11\uffff"+
            "\2\6\1\100\1\57\1\uffff\1\106\2\100\1\6\1\uffff\1\60\1\6\1\100"+
            "\3\6\1\100\3\6\1\100\1\6\1\uffff\1\6\1\100\1\6\1\106\1\100\1"+
            "\6\1\100\3\6\1\100\1\uffff\1\6\1\100\33\uffff\1\106\42\uffff"+
            "\1\6\4\uffff\1\62\22\uffff\1\6\2\uffff\1\6\7\uffff\1\6\2\uffff"+
            "\1\6\4\uffff\1\6",
            "\1\106\12\uffff\1\140\1\133\6\uffff\1\113\40\uffff\1\106\11"+
            "\uffff\2\106\1\132\1\111\1\uffff\1\106\2\132\1\106\1\uffff\1"+
            "\112\1\106\1\132\3\106\1\132\3\106\1\132\1\106\1\uffff\1\106"+
            "\1\132\2\106\1\132\1\106\1\132\3\106\1\132\1\uffff\1\106\1\132"+
            "\33\uffff\1\140\42\uffff\1\106\4\uffff\1\114\22\uffff\1\106"+
            "\2\uffff\1\106\7\uffff\1\106\2\uffff\1\106\4\uffff\1\106",
            "\1\140\12\uffff\1\171\1\164\6\uffff\1\144\40\uffff\1\140\11"+
            "\uffff\2\140\1\163\1\142\1\uffff\1\140\2\163\1\140\1\uffff\1"+
            "\143\1\140\1\163\3\140\1\163\3\140\1\163\1\140\1\uffff\1\140"+
            "\1\163\2\140\1\163\1\140\1\163\3\140\1\163\1\uffff\1\140\1\163"+
            "\33\uffff\1\171\42\uffff\1\140\4\uffff\1\145\22\uffff\1\140"+
            "\2\uffff\1\140\7\uffff\1\140\2\uffff\1\140\4\uffff\1\140",
            "",
            "",
            "\1\173\63\uffff\1\u0083\11\uffff\1\174\2\uffff\1\u0087\6\uffff"+
            "\1\u0086\4\uffff\1\175\1\uffff\1\u0081\4\uffff\1\176\5\uffff"+
            "\1\175\1\uffff\1\u0081\3\uffff\1\177\16\uffff\1\u0088\11\uffff"+
            "\1\u0090\10\uffff\1\u0080\6\uffff\1\u0089\1\u008a\1\u008b\25"+
            "\uffff\1\46\7\uffff\1\u008e\6\uffff\1\u008f\1\uffff\1\u008d"+
            "\3\uffff\1\u008c\2\uffff\1\u0085\2\uffff\1\u0085\7\uffff\1\u0084"+
            "\1\uffff\1\u008c\1\u0085\4\uffff\1\u0082",
            "\1\u0093\63\uffff\1\u009b\11\uffff\1\u0094\2\uffff\1\u009f"+
            "\6\uffff\1\u009e\4\uffff\1\u0095\1\uffff\1\u0099\4\uffff\1\u0096"+
            "\5\uffff\1\u0095\1\uffff\1\u0099\3\uffff\1\u0097\16\uffff\1"+
            "\u00a0\13\uffff\1\u0092\6\uffff\1\u0098\6\uffff\1\u00a1\1\u00a2"+
            "\1\u00a3\35\uffff\1\u00a6\6\uffff\1\u00a7\1\uffff\1\u00a5\3"+
            "\uffff\1\u00a4\2\uffff\1\u009d\2\uffff\1\u009d\7\uffff\1\u009c"+
            "\1\uffff\1\u00a4\1\u009d\4\uffff\1\u009a",
            "\1\u00a8\u0084\uffff\1\u00aa\2\uffff\1\u00aa\7\uffff\1\u00a9"+
            "\2\uffff\1\u00aa",
            "\1\u00ab\u0084\uffff\1\u00ad\2\uffff\1\u00ad\7\uffff\1\u00ac"+
            "\2\uffff\1\u00ad",
            "",
            "",
            "\1\171\63\uffff\1\171\11\uffff\1\171\2\uffff\1\u00ba\6\uffff"+
            "\1\171\4\uffff\1\171\1\uffff\1\171\4\uffff\1\171\5\uffff\1\171"+
            "\1\uffff\1\171\3\uffff\1\171\16\uffff\1\171\22\uffff\1\171\6"+
            "\uffff\3\171\35\uffff\1\171\6\uffff\1\171\1\uffff\1\171\3\uffff"+
            "\1\171\2\uffff\1\171\2\uffff\1\171\7\uffff\1\171\1\uffff\2\171"+
            "\4\uffff\1\171",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00c4\63\uffff\1\u00cc\11\uffff\1\u00c5\2\uffff\1\u00c3"+
            "\5\uffff\1\u00d8\1\u00cf\4\uffff\1\u00c6\1\uffff\1\u00ca\4\uffff"+
            "\1\u00c7\5\uffff\1\u00c6\1\uffff\1\u00ca\3\uffff\1\u00c8\16"+
            "\uffff\1\u00d0\22\uffff\1\u00c9\6\uffff\1\u00d1\1\u00d2\1\u00d3"+
            "\35\uffff\1\u00d6\6\uffff\1\u00d7\1\uffff\1\u00d5\3\uffff\1"+
            "\u00d4\2\uffff\1\u00ce\2\uffff\1\u00ce\7\uffff\1\u00cd\1\uffff"+
            "\1\u00d4\1\u00ce\4\uffff\1\u00cb",
            "\1\171\63\uffff\1\u00e1\11\uffff\1\171\2\uffff\1\171\6\uffff"+
            "\1\171\4\uffff\1\171\1\uffff\1\171\4\uffff\1\171\5\uffff\1\171"+
            "\1\uffff\1\171\3\uffff\1\171\16\uffff\1\171\22\uffff\1\171\6"+
            "\uffff\3\171\25\uffff\1\46\7\uffff\1\171\6\uffff\1\171\1\uffff"+
            "\1\171\3\uffff\1\171\2\uffff\1\u00e3\2\uffff\1\u00e3\7\uffff"+
            "\1\u00e2\1\uffff\1\171\1\u00e3\4\uffff\1\u00e0",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00ef\63\uffff\1\u00f7\11\uffff\1\u00f0\2\uffff\1\u00fb"+
            "\6\uffff\1\u00fa\4\uffff\1\u00f1\1\uffff\1\u00f5\4\uffff\1\u00f2"+
            "\5\uffff\1\u00f1\1\uffff\1\u00f5\3\uffff\1\u00f3\16\uffff\1"+
            "\u00fc\11\uffff\1\u0104\10\uffff\1\u00f4\6\uffff\1\u00fd\1\u00fe"+
            "\1\u00ff\35\uffff\1\u0102\6\uffff\1\u0103\1\uffff\1\u0101\3"+
            "\uffff\1\u0100\2\uffff\1\u00f9\2\uffff\1\u00f9\7\uffff\1\u00f8"+
            "\1\uffff\1\u0100\1\u00f9\4\uffff\1\u00f6",
            "\1\u0105\63\uffff\1\u010d\11\uffff\1\u0106\2\uffff\1\u0111"+
            "\6\uffff\1\u0110\4\uffff\1\u0107\1\uffff\1\u010b\4\uffff\1\u0108"+
            "\5\uffff\1\u0107\1\uffff\1\u010b\3\uffff\1\u0109\16\uffff\1"+
            "\u0112\13\uffff\1\u011a\6\uffff\1\u010a\6\uffff\1\u0113\1\u0114"+
            "\1\u0115\35\uffff\1\u0118\6\uffff\1\u0119\1\uffff\1\u0117\3"+
            "\uffff\1\u0116\2\uffff\1\u010f\2\uffff\1\u010f\7\uffff\1\u010e"+
            "\1\uffff\1\u0116\1\u010f\4\uffff\1\u010c",
            "\1\u011b\u0084\uffff\1\u011d\2\uffff\1\u011d\7\uffff\1\u011c"+
            "\2\uffff\1\u011d",
            "\1\u011e\u0084\uffff\1\u0120\2\uffff\1\u0120\7\uffff\1\u011f"+
            "\2\uffff\1\u0120",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u0122\63\uffff\1\u012a\11\uffff\1\u0123\2\uffff\1\u0121"+
            "\5\uffff\1\u0136\1\u012d\4\uffff\1\u0124\1\uffff\1\u0128\4\uffff"+
            "\1\u0125\5\uffff\1\u0124\1\uffff\1\u0128\3\uffff\1\u0126\16"+
            "\uffff\1\u012e\22\uffff\1\u0127\6\uffff\1\u012f\1\u0130\1\u0131"+
            "\35\uffff\1\u0134\6\uffff\1\u0135\1\uffff\1\u0133\3\uffff\1"+
            "\u0132\2\uffff\1\u012c\2\uffff\1\u012c\7\uffff\1\u012b\1\uffff"+
            "\1\u0132\1\u012c\4\uffff\1\u0129",
            "\1\171\63\uffff\1\u013f\11\uffff\1\171\2\uffff\1\171\6\uffff"+
            "\1\171\4\uffff\1\171\1\uffff\1\171\4\uffff\1\171\5\uffff\1\171"+
            "\1\uffff\1\171\3\uffff\1\171\16\uffff\1\171\22\uffff\1\171\6"+
            "\uffff\3\171\25\uffff\1\46\7\uffff\1\171\6\uffff\1\171\1\uffff"+
            "\1\171\3\uffff\1\171\2\uffff\1\u0141\2\uffff\1\u0141\7\uffff"+
            "\1\u0140\1\uffff\1\171\1\u0141\4\uffff\1\u013e",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u014d\63\uffff\1\u0155\11\uffff\1\u014e\2\uffff\1\u0159"+
            "\6\uffff\1\u0158\4\uffff\1\u014f\1\uffff\1\u0153\4\uffff\1\u0150"+
            "\5\uffff\1\u014f\1\uffff\1\u0153\3\uffff\1\u0151\16\uffff\1"+
            "\u015a\11\uffff\1\u0162\10\uffff\1\u0152\6\uffff\1\u015b\1\u015c"+
            "\1\u015d\35\uffff\1\u0160\6\uffff\1\u0161\1\uffff\1\u015f\3"+
            "\uffff\1\u015e\2\uffff\1\u0157\2\uffff\1\u0157\7\uffff\1\u0156"+
            "\1\uffff\1\u015e\1\u0157\4\uffff\1\u0154",
            "\1\u0163\63\uffff\1\u016b\11\uffff\1\u0164\2\uffff\1\u016f"+
            "\6\uffff\1\u016e\4\uffff\1\u0165\1\uffff\1\u0169\4\uffff\1\u0166"+
            "\5\uffff\1\u0165\1\uffff\1\u0169\3\uffff\1\u0167\16\uffff\1"+
            "\u0170\13\uffff\1\u0178\6\uffff\1\u0168\6\uffff\1\u0171\1\u0172"+
            "\1\u0173\35\uffff\1\u0176\6\uffff\1\u0177\1\uffff\1\u0175\3"+
            "\uffff\1\u0174\2\uffff\1\u016d\2\uffff\1\u016d\7\uffff\1\u016c"+
            "\1\uffff\1\u0174\1\u016d\4\uffff\1\u016a",
            "\1\u0179\u0084\uffff\1\u017b\2\uffff\1\u017b\7\uffff\1\u017a"+
            "\2\uffff\1\u017b",
            "\1\u017c\u0084\uffff\1\u017e\2\uffff\1\u017e\7\uffff\1\u017d"+
            "\2\uffff\1\u017e",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u0180\63\uffff\1\u0188\11\uffff\1\u0181\2\uffff\1\u017f"+
            "\5\uffff\1\u0194\1\u018b\4\uffff\1\u0182\1\uffff\1\u0186\4\uffff"+
            "\1\u0183\5\uffff\1\u0182\1\uffff\1\u0186\3\uffff\1\u0184\16"+
            "\uffff\1\u018c\22\uffff\1\u0185\6\uffff\1\u018d\1\u018e\1\u018f"+
            "\35\uffff\1\u0192\6\uffff\1\u0193\1\uffff\1\u0191\3\uffff\1"+
            "\u0190\2\uffff\1\u018a\2\uffff\1\u018a\7\uffff\1\u0189\1\uffff"+
            "\1\u0190\1\u018a\4\uffff\1\u0187",
            "\1\171\63\uffff\1\u019d\11\uffff\1\171\2\uffff\1\171\6\uffff"+
            "\1\171\4\uffff\1\171\1\uffff\1\171\4\uffff\1\171\5\uffff\1\171"+
            "\1\uffff\1\171\3\uffff\1\171\16\uffff\1\171\22\uffff\1\171\6"+
            "\uffff\3\171\25\uffff\1\46\7\uffff\1\171\6\uffff\1\171\1\uffff"+
            "\1\171\3\uffff\1\171\2\uffff\1\u019f\2\uffff\1\u019f\7\uffff"+
            "\1\u019e\1\uffff\1\171\1\u019f\4\uffff\1\u019c",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
    static final short[][] DFA32_transition;

    static {
        int numStates = DFA32_transitionS.length;
        DFA32_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
        }
    }

    class DFA32 extends DFA {

        public DFA32(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 32;
            this.eot = DFA32_eot;
            this.eof = DFA32_eof;
            this.min = DFA32_min;
            this.max = DFA32_max;
            this.accept = DFA32_accept;
            this.special = DFA32_special;
            this.transition = DFA32_transition;
        }
        public String getDescription() {
            return "294:1: block_internal : ( try_stmt_wrapper | throw_stmt_wrapper | static_start_wrapper SEMICOLON | do_stmt | const_expression_wrapper SEMICOLON | variable_init_wrapper | if_stmt_wrapper | else_stmt | switch_stmt_wrapper | return_stmt | for_stmt_wrapper | while_stmt_wrapper | single_operators | struct_variable SEMICOLON | enum_variable SEMICOLON | typeof_started SEMICOLON | known_type_started SEMICOLON | SEMICOLON | goto_wrapper | 'extern' );";
        }
    }
    static final String DFA56_eotS =
        "\u021a\uffff";
    static final String DFA56_eofS =
        "\u021a\uffff";
    static final String DFA56_minS =
        "\1\72\1\22\6\uffff\1\31\1\uffff\2\6\15\uffff\2\6\20\uffff\4\6\1"+
        "\72\1\6\21\uffff\2\6\7\72\1\uffff\2\6\1\72\6\6\3\107\u01c2\uffff";
    static final String DFA56_maxS =
        "\2\u00d2\6\uffff\1\u00d2\1\uffff\2\u00d2\15\uffff\2\u00d2\20\uffff"+
        "\1\u00d2\5\u00cd\21\uffff\1\u00d2\1\u00ac\7\u00d2\1\uffff\2\u00ac"+
        "\1\u00cd\1\u00d2\5\177\3\107\u01c2\uffff";
    static final String DFA56_acceptS =
        "\2\uffff\1\2\2\uffff\1\3\1\1\122\uffff\25\1\13\uffff\5\1\1\uffff"+
        "\1\1\7\uffff\3\1\7\uffff\1\1\14\uffff\4\1\21\uffff\4\1\21\uffff"+
        "\4\1\21\uffff\6\1\20\uffff\1\1\5\uffff\26\1\1\uffff\u008a\1\1\uffff"+
        "\23\1\1\uffff\53\1\1\uffff\16\1\1\uffff\16\1\1\uffff\16\1\1\uffff"+
        "\16\1\1\uffff\3\1";
    static final String DFA56_specialS =
        "\u021a\uffff}>";
    static final String[] DFA56_transitionS = {
            "\1\2\111\uffff\1\5\42\uffff\1\2\27\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\1\2\uffff\1\2\4\uffff\1\2",
            "\1\2\6\uffff\1\2\40\uffff\1\6\13\uffff\1\2\1\13\2\uffff\2\2"+
            "\2\uffff\1\12\1\uffff\1\2\3\uffff\1\2\3\uffff\1\2\3\uffff\1"+
            "\2\2\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\14\uffff"+
            "\1\6\16\uffff\1\2\12\uffff\3\6\32\uffff\1\2\2\uffff\1\6\6\uffff"+
            "\1\6\1\uffff\1\6\3\uffff\1\6\2\uffff\1\6\2\uffff\1\6\7\uffff"+
            "\1\10\1\uffff\2\6\4\uffff\1\6",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\6\40\uffff\1\2\14\uffff\1\31\6\uffff\1\32\2\uffff\1\6\43"+
            "\uffff\1\2\11\uffff\1\6\17\uffff\3\2\32\uffff\1\6\2\uffff\1"+
            "\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1"+
            "\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "\1\2\63\uffff\1\54\11\uffff\1\2\2\uffff\1\53\6\uffff\1\57\4"+
            "\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3"+
            "\uffff\1\2\16\uffff\1\2\13\uffff\1\2\6\uffff\1\2\6\uffff\1\60"+
            "\2\2\35\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff"+
            "\1\56\2\uffff\1\56\7\uffff\1\55\1\uffff\1\2\1\56\4\uffff\1\2",
            "\1\104\16\uffff\1\6\44\uffff\1\103\11\uffff\1\105\2\uffff\1"+
            "\117\6\uffff\1\116\4\uffff\1\106\1\uffff\1\112\4\uffff\1\107"+
            "\5\uffff\1\106\1\uffff\1\112\3\uffff\1\110\16\uffff\1\120\11"+
            "\uffff\1\2\10\uffff\1\111\6\uffff\1\121\1\122\1\123\25\uffff"+
            "\1\6\7\uffff\1\126\6\uffff\1\127\1\uffff\1\125\3\uffff\1\124"+
            "\2\uffff\1\115\2\uffff\1\115\7\uffff\1\114\1\uffff\1\124\1\115"+
            "\4\uffff\1\102",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\131\16\uffff\1\2\44\uffff\1\141\11\uffff\1\132\2\uffff\1"+
            "\145\6\uffff\1\144\4\uffff\1\133\1\uffff\1\137\4\uffff\1\134"+
            "\5\uffff\1\133\1\uffff\1\137\3\uffff\1\135\16\uffff\1\146\11"+
            "\uffff\1\6\10\uffff\1\136\6\uffff\1\147\1\150\1\151\25\uffff"+
            "\1\2\7\uffff\1\154\6\uffff\1\155\1\uffff\1\153\3\uffff\1\152"+
            "\2\uffff\1\143\2\uffff\1\143\7\uffff\1\142\1\uffff\1\152\1\143"+
            "\4\uffff\1\140",
            "\1\6\63\uffff\1\171\11\uffff\1\6\2\uffff\1\175\6\uffff\1\174"+
            "\4\uffff\1\6\1\uffff\1\6\4\uffff\1\6\5\uffff\1\6\1\uffff\1\6"+
            "\3\uffff\1\6\16\uffff\1\6\13\uffff\1\6\6\uffff\1\6\6\uffff\1"+
            "\177\2\6\35\uffff\1\6\6\uffff\1\6\1\uffff\1\6\3\uffff\1\6\2"+
            "\uffff\1\173\2\uffff\1\173\7\uffff\1\172\1\uffff\1\6\1\173\4"+
            "\uffff\1\6",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\2\16\uffff\1\u0087\44\uffff\1\u0089\11\uffff\1\2\2\uffff"+
            "\1\2\6\uffff\1\2\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff"+
            "\1\2\1\uffff\1\2\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff"+
            "\3\2\25\uffff\1\u0091\7\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3"+
            "\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4"+
            "\uffff\1\u0088",
            "\1\2\22\uffff\1\u00a0\40\uffff\1\6\11\uffff\3\2\1\u009e\1\uffff"+
            "\4\2\1\uffff\1\u009f\13\2\1\uffff\13\2\1\uffff\2\2\30\uffff"+
            "\1\2\52\uffff\1\u00a1\22\uffff\1\6\2\uffff\1\6\12\uffff\1\6",
            "\1\2\22\uffff\1\u00b5\40\uffff\1\6\11\uffff\3\2\1\u00b3\1\uffff"+
            "\4\2\1\uffff\1\u00b4\13\2\1\uffff\13\2\1\uffff\2\2\30\uffff"+
            "\1\2\52\uffff\1\u00b6\22\uffff\1\6\2\uffff\1\6\12\uffff\1\6",
            "\1\2\22\uffff\1\u00ca\40\uffff\1\6\11\uffff\3\2\1\u00c8\1\uffff"+
            "\4\2\1\uffff\1\u00c9\13\2\1\uffff\13\2\1\uffff\2\2\30\uffff"+
            "\1\2\52\uffff\1\u00cb\22\uffff\1\6\2\uffff\1\6\12\uffff\1\6",
            "\1\u00de\14\uffff\1\u00dd\6\uffff\1\u00e1\100\uffff\1\u00e2"+
            "\57\uffff\1\u00e0\2\uffff\1\u00e0\7\uffff\1\u00df\2\uffff\1"+
            "\u00e0",
            "\1\2\63\uffff\1\6\11\uffff\3\2\2\uffff\4\2\2\uffff\13\2\1\uffff"+
            "\13\2\1\uffff\2\2\30\uffff\1\2\75\uffff\1\6\2\uffff\1\6\12\uffff"+
            "\1\6",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\6\63\uffff\1\u00f3\23\uffff\1\6\2\uffff\1\6\55\uffff\1\6"+
            "\47\uffff\1\6\27\uffff\1\u00fa\2\uffff\1\u00fa\7\uffff\1\u00f9"+
            "\2\uffff\1\u00fa\4\uffff\1\6",
            "\1\u00fd\13\uffff\1\2\6\uffff\1\u0100\52\uffff\1\u0108\1\u010b"+
            "\1\u010e\1\u00ff\1\uffff\1\u0103\2\u010e\1\u0107\1\uffff\1\u00fb"+
            "\1\u0105\1\u010e\1\u00fc\1\u0106\1\u0104\1\u010e\1\u0102\2\u0106"+
            "\1\u010e\1\u0107\1\uffff\1\u010a\1\u010e\1\u010c\1\u0103\1\u010e"+
            "\1\u0104\1\u010e\1\u0102\1\u010d\1\u0105\1\u010e\1\uffff\1\u0109"+
            "\1\u010e\26\uffff\1\u00fe\54\uffff\1\u0101",
            "\1\u0118\11\uffff\1\u0111\2\uffff\1\u0110\6\uffff\1\u011b\4"+
            "\uffff\1\u0112\1\uffff\1\u0116\4\uffff\1\u0113\5\uffff\1\u0112"+
            "\1\uffff\1\u0116\3\uffff\1\u0114\16\uffff\1\u011c\22\uffff\1"+
            "\u0115\6\uffff\1\u011d\1\u011e\1\u011f\35\uffff\1\u0122\6\uffff"+
            "\1\u0123\1\uffff\1\u0121\3\uffff\1\u0120\2\uffff\1\u011a\2\uffff"+
            "\1\u011a\7\uffff\1\u0119\1\uffff\1\u0120\1\u011a\4\uffff\1\u0117",
            "\1\u012a\14\uffff\1\u012e\6\uffff\1\u012d\4\uffff\1\u0124\1"+
            "\uffff\1\u0128\4\uffff\1\u0125\5\uffff\1\u0124\1\uffff\1\u0128"+
            "\3\uffff\1\u0126\16\uffff\1\u012f\22\uffff\1\u0127\6\uffff\1"+
            "\u0130\1\u0131\1\u0132\35\uffff\1\u0135\6\uffff\1\u0136\1\uffff"+
            "\1\u0134\3\uffff\1\u0133\2\uffff\1\u012c\2\uffff\1\u012c\7\uffff"+
            "\1\u012b\1\uffff\1\u0133\1\u012c\4\uffff\1\u0129",
            "\1\u013c\14\uffff\1\u0140\6\uffff\1\u013f\6\uffff\1\u013a\4"+
            "\uffff\1\u0137\7\uffff\1\u013a\3\uffff\1\u0138\16\uffff\1\u0141"+
            "\22\uffff\1\u0139\6\uffff\1\u0142\1\u0143\1\u0144\35\uffff\1"+
            "\u0147\6\uffff\1\u0148\1\uffff\1\u0146\3\uffff\1\u0145\2\uffff"+
            "\1\u013e\2\uffff\1\u013e\7\uffff\1\u013d\1\uffff\1\u0145\1\u013e"+
            "\4\uffff\1\u013b",
            "\1\u014d\14\uffff\1\u0151\6\uffff\1\u0150\6\uffff\1\u014b\14"+
            "\uffff\1\u014b\3\uffff\1\u0149\16\uffff\1\u0152\22\uffff\1\u014a"+
            "\6\uffff\1\u0153\1\u0154\1\u0155\35\uffff\1\u0158\6\uffff\1"+
            "\u0159\1\uffff\1\u0157\3\uffff\1\u0156\2\uffff\1\u014f\2\uffff"+
            "\1\u014f\7\uffff\1\u014e\1\uffff\1\u0156\1\u014f\4\uffff\1\u014c",
            "\1\u015d\14\uffff\1\u0161\6\uffff\1\u0160\6\uffff\1\u015b\14"+
            "\uffff\1\u015b\22\uffff\1\u0162\22\uffff\1\u015a\6\uffff\1\u0163"+
            "\1\u0164\1\u0165\35\uffff\1\u0168\6\uffff\1\u0169\1\uffff\1"+
            "\u0167\3\uffff\1\u0166\2\uffff\1\u015f\2\uffff\1\u015f\7\uffff"+
            "\1\u015e\1\uffff\1\u0166\1\u015f\4\uffff\1\u015c",
            "\1\u016c\14\uffff\1\u0170\6\uffff\1\u016f\6\uffff\1\u016a\14"+
            "\uffff\1\u016a\22\uffff\1\u0171\31\uffff\1\u0172\1\u0173\1\u0174"+
            "\35\uffff\1\u0177\6\uffff\1\u0178\1\uffff\1\u0176\3\uffff\1"+
            "\u0175\2\uffff\1\u016e\2\uffff\1\u016e\7\uffff\1\u016d\1\uffff"+
            "\1\u0175\1\u016e\4\uffff\1\u016b",
            "\1\u017a\14\uffff\1\u017e\6\uffff\1\u017d\46\uffff\1\u017f"+
            "\31\uffff\1\u0180\1\u0181\1\u0182\35\uffff\1\u0185\6\uffff\1"+
            "\u0186\1\uffff\1\u0184\3\uffff\1\u0183\2\uffff\1\u017c\2\uffff"+
            "\1\u017c\7\uffff\1\u017b\1\uffff\1\u0183\1\u017c\4\uffff\1\u0179",
            "",
            "\1\u018d\13\uffff\1\2\6\uffff\1\u0189\52\uffff\1\u0192\1\u0195"+
            "\1\u0198\1\u0187\1\uffff\1\u018d\2\u0198\1\u0191\1\uffff\1\u0188"+
            "\1\u018f\1\u0198\1\u018b\1\u0190\1\u018e\1\u0198\1\u018c\2\u0190"+
            "\1\u0198\1\u0191\1\uffff\1\u0194\1\u0198\1\u0196\1\u018d\1\u0198"+
            "\1\u018e\1\u0198\1\u018c\1\u0197\1\u018f\1\u0198\1\uffff\1\u0193"+
            "\1\u0198\26\uffff\1\u0199\54\uffff\1\u018a",
            "\1\u01a1\13\uffff\1\2\6\uffff\1\u019d\52\uffff\1\u01a6\1\u01a9"+
            "\1\u01ac\1\u019b\1\uffff\1\u01a1\2\u01ac\1\u01a5\1\uffff\1\u019c"+
            "\1\u01a3\1\u01ac\1\u019f\1\u01a4\1\u01a2\1\u01ac\1\u01a0\2\u01a4"+
            "\1\u01ac\1\u01a5\1\uffff\1\u01a8\1\u01ac\1\u01aa\1\u01a1\1\u01ac"+
            "\1\u01a2\1\u01ac\1\u01a0\1\u01ab\1\u01a3\1\u01ac\1\uffff\1\u01a7"+
            "\1\u01ac\26\uffff\1\u01ad\54\uffff\1\u019e",
            "\1\u01b0\14\uffff\1\u01af\6\uffff\1\u01b3\100\uffff\1\u01b4"+
            "\57\uffff\1\u01b2\2\uffff\1\u01b2\7\uffff\1\u01b1\2\uffff\1"+
            "\u01b2",
            "\1\u01b8\16\uffff\1\u01b5\44\uffff\1\u01b7\11\uffff\1\u01b9"+
            "\2\uffff\1\u01c3\6\uffff\1\u01c2\4\uffff\1\u01ba\1\uffff\1\u01be"+
            "\4\uffff\1\u01bb\5\uffff\1\u01ba\1\uffff\1\u01be\3\uffff\1\u01bc"+
            "\16\uffff\1\u01c4\22\uffff\1\u01bd\6\uffff\1\u01c5\1\u01c6\1"+
            "\u01c7\25\uffff\1\u01bf\7\uffff\1\u01ca\6\uffff\1\u01cb\1\uffff"+
            "\1\u01c9\3\uffff\1\u01c8\2\uffff\1\u01c1\2\uffff\1\u01c1\7\uffff"+
            "\1\u01c0\1\uffff\1\u01c8\1\u01c1\4\uffff\1\u01b6",
            "\1\u01cd\13\uffff\1\2\61\uffff\1\u01d2\1\u01d5\1\u01d8\2\uffff"+
            "\1\u01cd\2\u01d8\1\u01d1\2\uffff\1\u01cf\1\u01d8\2\u01d0\1\u01ce"+
            "\1\u01d8\1\u01cc\2\u01d0\1\u01d8\1\u01d1\1\uffff\1\u01d4\1\u01d8"+
            "\1\u01d6\1\u01cd\1\u01d8\1\u01ce\1\u01d8\1\u01cc\1\u01d7\1\u01cf"+
            "\1\u01d8\1\uffff\1\u01d3\1\u01d8\26\uffff\1\u01d9",
            "\1\u01dc\13\uffff\1\2\61\uffff\1\u01e1\1\u01e4\1\u01e7\2\uffff"+
            "\1\u01dc\2\u01e7\1\u01e0\2\uffff\1\u01de\1\u01e7\2\u01df\1\u01dd"+
            "\1\u01e7\1\u01db\2\u01df\1\u01e7\1\u01e0\1\uffff\1\u01e3\1\u01e7"+
            "\1\u01e5\1\u01dc\1\u01e7\1\u01dd\1\u01e7\1\u01db\1\u01e6\1\u01de"+
            "\1\u01e7\1\uffff\1\u01e2\1\u01e7\26\uffff\1\u01e8",
            "\1\u01eb\13\uffff\1\2\61\uffff\1\u01f0\1\u01f3\1\u01f6\2\uffff"+
            "\1\u01eb\2\u01f6\1\u01ef\2\uffff\1\u01ed\1\u01f6\2\u01ee\1\u01ec"+
            "\1\u01f6\1\u01ea\2\u01ee\1\u01f6\1\u01ef\1\uffff\1\u01f2\1\u01f6"+
            "\1\u01f4\1\u01eb\1\u01f6\1\u01ec\1\u01f6\1\u01ea\1\u01f5\1\u01ed"+
            "\1\u01f6\1\uffff\1\u01f1\1\u01f6\26\uffff\1\u01f7",
            "\1\u01fa\13\uffff\1\2\61\uffff\1\u01ff\1\u0202\1\u0205\2\uffff"+
            "\1\u01fa\2\u0205\1\u01fe\2\uffff\1\u01fc\1\u0205\2\u01fd\1\u01fb"+
            "\1\u0205\1\u01f9\2\u01fd\1\u0205\1\u01fe\1\uffff\1\u0201\1\u0205"+
            "\1\u0203\1\u01fa\1\u0205\1\u01fb\1\u0205\1\u01f9\1\u0204\1\u01fc"+
            "\1\u0205\1\uffff\1\u0200\1\u0205\26\uffff\1\u0206",
            "\1\u0209\13\uffff\1\2\61\uffff\1\u020e\1\u0211\1\u0214\2\uffff"+
            "\1\u0209\2\u0214\1\u020d\2\uffff\1\u020b\1\u0214\2\u020c\1\u020a"+
            "\1\u0214\1\u0208\2\u020c\1\u0214\1\u020d\1\uffff\1\u0210\1\u0214"+
            "\1\u0212\1\u0209\1\u0214\1\u020a\1\u0214\1\u0208\1\u0213\1\u020b"+
            "\1\u0214\1\uffff\1\u020f\1\u0214\26\uffff\1\u0215",
            "\1\u0217",
            "\1\u0218",
            "\1\u0219",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA56_eot = DFA.unpackEncodedString(DFA56_eotS);
    static final short[] DFA56_eof = DFA.unpackEncodedString(DFA56_eofS);
    static final char[] DFA56_min = DFA.unpackEncodedStringToUnsignedChars(DFA56_minS);
    static final char[] DFA56_max = DFA.unpackEncodedStringToUnsignedChars(DFA56_maxS);
    static final short[] DFA56_accept = DFA.unpackEncodedString(DFA56_acceptS);
    static final short[] DFA56_special = DFA.unpackEncodedString(DFA56_specialS);
    static final short[][] DFA56_transition;

    static {
        int numStates = DFA56_transitionS.length;
        DFA56_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA56_transition[i] = DFA.unpackEncodedString(DFA56_transitionS[i]);
        }
    }

    class DFA56 extends DFA {

        public DFA56(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 56;
            this.eot = DFA56_eot;
            this.eof = DFA56_eof;
            this.min = DFA56_min;
            this.max = DFA56_max;
            this.accept = DFA56_accept;
            this.special = DFA56_special;
            this.transition = DFA56_transition;
        }
        public String getDescription() {
            return "477:22: ( for_stmt_int1 | ( full_expr2 ( for_stmt_int1 | for_stmt_int2 ) ) | for_stmt_int2 )";
        }
    }
    static final String DFA63_eotS =
        "\u0892\uffff";
    static final String DFA63_eofS =
        "\u0892\uffff";
    static final String DFA63_minS =
        "\1\72\3\6\1\uffff\2\6\2\72\1\6\7\uffff\2\6\2\72\10\uffff\2\6\2\72"+
        "\10\uffff\10\72\3\6\1\72\6\6\3\107\1\6\1\uffff\1\6\10\72\3\6\1\72"+
        "\6\6\3\107\6\6\6\uffff\10\72\3\6\1\72\6\6\3\107\1\6\10\72\3\6\1"+
        "\72\6\6\3\107\7\6\10\72\3\6\1\72\6\6\3\107\1\6\10\72\3\6\1\72\6"+
        "\6\3\107\7\6\u07cc\uffff";
    static final String DFA63_maxS =
        "\4\u00d2\1\uffff\2\u00d2\2\u00cd\1\u00d2\7\uffff\2\u00d2\2\u00cd"+
        "\10\uffff\2\u00d2\2\u00cd\10\uffff\7\u00d2\1\u00cd\3\u00ac\1\u00cd"+
        "\1\u00d2\5\177\3\107\1\u00d2\1\uffff\10\u00d2\1\u00cd\3\u00ac\1"+
        "\u00cd\1\u00d2\5\u0081\3\107\6\u00d2\6\uffff\7\u00d2\1\u00cd\3\u00ac"+
        "\1\u00cd\1\u00d2\5\177\3\107\10\u00d2\1\u00cd\3\u00ac\1\u00cd\1"+
        "\u00d2\5\u0081\3\107\16\u00d2\1\u00cd\3\u00ac\1\u00cd\1\u00d2\5"+
        "\177\3\107\10\u00d2\1\u00cd\3\u00ac\1\u00cd\1\u00d2\5\u0081\3\107"+
        "\7\u00d2\u07cc\uffff";
    static final String DFA63_acceptS =
        "\4\uffff\1\2\5\uffff\1\1\u00bb\uffff\24\1\1\uffff\146\1\2\uffff"+
        "\u00aa\1\10\uffff\1\1\1\uffff\2\1\4\uffff\1\1\3\uffff\u011b\1\5"+
        "\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff"+
        "\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1"+
        "\3\uffff\u0124\1\10\uffff\u011b\1\5\uffff\1\1\3\uffff\2\1\5\uffff"+
        "\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1"+
        "\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff"+
        "\u0124\1\10\uffff\u011b\1\5\uffff\1\1\3\uffff\2\1\5\uffff\2\1\3"+
        "\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff"+
        "\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff\2\1\5\uffff\2\1\3\uffff";
    static final String DFA63_specialS =
        "\u0892\uffff}>";
    static final String[] DFA63_transitionS = {
            "\1\1\154\uffff\1\4\27\uffff\1\3\2\uffff\1\3\7\uffff\1\2\2\uffff"+
            "\1\3\4\uffff\1\4",
            "\1\11\13\uffff\1\4\6\uffff\1\7\40\uffff\1\12\13\uffff\1\4\1"+
            "\5\2\uffff\2\4\2\uffff\1\6\1\uffff\1\4\3\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff\1"+
            "\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\10\22\uffff\1\12\2\uffff"+
            "\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\12\13\uffff\1\4\6\uffff\1\23\40\uffff\1\12\13\uffff\1\4"+
            "\1\21\2\uffff\2\4\2\uffff\1\22\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\24\22\uffff\1\12\2"+
            "\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\12\13\uffff\1\4\6\uffff\1\37\40\uffff\1\12\13\uffff\1\4"+
            "\1\35\2\uffff\2\4\2\uffff\1\36\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\40\22\uffff\1\12\2"+
            "\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "",
            "\1\51\63\uffff\1\61\11\uffff\1\52\2\uffff\1\65\6\uffff\1\64"+
            "\4\uffff\1\53\1\uffff\1\57\4\uffff\1\54\5\uffff\1\53\1\uffff"+
            "\1\57\3\uffff\1\55\16\uffff\1\66\11\uffff\1\76\10\uffff\1\56"+
            "\6\uffff\1\67\1\70\1\71\25\uffff\1\4\7\uffff\1\74\6\uffff\1"+
            "\75\1\uffff\1\73\3\uffff\1\72\2\uffff\1\63\2\uffff\1\63\7\uffff"+
            "\1\62\1\uffff\1\72\1\63\4\uffff\1\60",
            "\1\101\63\uffff\1\111\11\uffff\1\102\2\uffff\1\115\6\uffff"+
            "\1\114\4\uffff\1\103\1\uffff\1\107\4\uffff\1\104\5\uffff\1\103"+
            "\1\uffff\1\107\3\uffff\1\105\16\uffff\1\116\13\uffff\1\100\6"+
            "\uffff\1\106\6\uffff\1\117\1\120\1\121\35\uffff\1\124\6\uffff"+
            "\1\125\1\uffff\1\123\3\uffff\1\122\2\uffff\1\113\2\uffff\1\113"+
            "\7\uffff\1\112\1\uffff\1\122\1\113\4\uffff\1\110",
            "\1\126\u0084\uffff\1\130\2\uffff\1\130\7\uffff\1\127\2\uffff"+
            "\1\130",
            "\1\131\u0084\uffff\1\133\2\uffff\1\133\7\uffff\1\132\2\uffff"+
            "\1\133",
            "\1\12\63\uffff\1\12\14\uffff\1\4\137\uffff\1\12\27\uffff\1"+
            "\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\142\63\uffff\1\152\11\uffff\1\143\2\uffff\1\156\6\uffff"+
            "\1\155\4\uffff\1\144\1\uffff\1\150\4\uffff\1\145\5\uffff\1\144"+
            "\1\uffff\1\150\3\uffff\1\146\16\uffff\1\157\11\uffff\1\167\10"+
            "\uffff\1\147\6\uffff\1\160\1\161\1\162\35\uffff\1\165\6\uffff"+
            "\1\166\1\uffff\1\164\3\uffff\1\163\2\uffff\1\154\2\uffff\1\154"+
            "\7\uffff\1\153\1\uffff\1\163\1\154\4\uffff\1\151",
            "\1\170\63\uffff\1\u0080\11\uffff\1\171\2\uffff\1\u0084\6\uffff"+
            "\1\u0083\4\uffff\1\172\1\uffff\1\176\4\uffff\1\173\5\uffff\1"+
            "\172\1\uffff\1\176\3\uffff\1\174\16\uffff\1\u0085\13\uffff\1"+
            "\u008d\6\uffff\1\175\6\uffff\1\u0086\1\u0087\1\u0088\35\uffff"+
            "\1\u008b\6\uffff\1\u008c\1\uffff\1\u008a\3\uffff\1\u0089\2\uffff"+
            "\1\u0082\2\uffff\1\u0082\7\uffff\1\u0081\1\uffff\1\u0089\1\u0082"+
            "\4\uffff\1\177",
            "\1\u008e\u0084\uffff\1\u0090\2\uffff\1\u0090\7\uffff\1\u008f"+
            "\2\uffff\1\u0090",
            "\1\u0091\u0084\uffff\1\u0093\2\uffff\1\u0093\7\uffff\1\u0092"+
            "\2\uffff\1\u0093",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u0094\63\uffff\1\u009c\11\uffff\1\u0095\2\uffff\1\u00a0"+
            "\6\uffff\1\u009f\4\uffff\1\u0096\1\uffff\1\u009a\4\uffff\1\u0097"+
            "\5\uffff\1\u0096\1\uffff\1\u009a\3\uffff\1\u0098\16\uffff\1"+
            "\u00a1\11\uffff\1\u00a9\10\uffff\1\u0099\6\uffff\1\u00a2\1\u00a3"+
            "\1\u00a4\35\uffff\1\u00a7\6\uffff\1\u00a8\1\uffff\1\u00a6\3"+
            "\uffff\1\u00a5\2\uffff\1\u009e\2\uffff\1\u009e\7\uffff\1\u009d"+
            "\1\uffff\1\u00a5\1\u009e\4\uffff\1\u009b",
            "\1\u00aa\63\uffff\1\u00b2\11\uffff\1\u00ab\2\uffff\1\u00b6"+
            "\6\uffff\1\u00b5\4\uffff\1\u00ac\1\uffff\1\u00b0\4\uffff\1\u00ad"+
            "\5\uffff\1\u00ac\1\uffff\1\u00b0\3\uffff\1\u00ae\16\uffff\1"+
            "\u00b7\13\uffff\1\u00bf\6\uffff\1\u00af\6\uffff\1\u00b8\1\u00b9"+
            "\1\u00ba\35\uffff\1\u00bd\6\uffff\1\u00be\1\uffff\1\u00bc\3"+
            "\uffff\1\u00bb\2\uffff\1\u00b4\2\uffff\1\u00b4\7\uffff\1\u00b3"+
            "\1\uffff\1\u00bb\1\u00b4\4\uffff\1\u00b1",
            "\1\u00c0\u0084\uffff\1\u00c2\2\uffff\1\u00c2\7\uffff\1\u00c1"+
            "\2\uffff\1\u00c2",
            "\1\u00c3\u0084\uffff\1\u00c5\2\uffff\1\u00c5\7\uffff\1\u00c4"+
            "\2\uffff\1\u00c5",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00ce\11\uffff\1\u00c7\2\uffff\1\u00c6\6\uffff\1\u00d1\4"+
            "\uffff\1\u00c8\1\uffff\1\u00cc\4\uffff\1\u00c9\5\uffff\1\u00c8"+
            "\1\uffff\1\u00cc\3\uffff\1\u00ca\16\uffff\1\u00d2\22\uffff\1"+
            "\u00cb\6\uffff\1\u00d3\1\u00d4\1\u00d5\25\uffff\1\4\7\uffff"+
            "\1\u00d8\6\uffff\1\u00d9\1\uffff\1\u00d7\3\uffff\1\u00d6\2\uffff"+
            "\1\u00d0\2\uffff\1\u00d0\7\uffff\1\u00cf\1\uffff\1\u00d6\1\u00d0"+
            "\4\uffff\1\u00cd",
            "\1\u00e1\14\uffff\1\u00e5\6\uffff\1\u00e4\4\uffff\1\u00db\1"+
            "\uffff\1\u00df\4\uffff\1\u00dc\5\uffff\1\u00db\1\uffff\1\u00df"+
            "\3\uffff\1\u00dd\16\uffff\1\u00e6\22\uffff\1\u00de\6\uffff\1"+
            "\u00e7\1\u00e8\1\u00e9\35\uffff\1\u00ec\6\uffff\1\u00ed\1\uffff"+
            "\1\u00eb\3\uffff\1\u00ea\2\uffff\1\u00e3\2\uffff\1\u00e3\7\uffff"+
            "\1\u00e2\1\uffff\1\u00ea\1\u00e3\4\uffff\1\u00e0",
            "\1\u00f3\14\uffff\1\u00f7\6\uffff\1\u00f6\6\uffff\1\u00f1\4"+
            "\uffff\1\u00ee\7\uffff\1\u00f1\3\uffff\1\u00ef\16\uffff\1\u00f8"+
            "\22\uffff\1\u00f0\6\uffff\1\u00f9\1\u00fa\1\u00fb\35\uffff\1"+
            "\u00fe\6\uffff\1\u00ff\1\uffff\1\u00fd\3\uffff\1\u00fc\2\uffff"+
            "\1\u00f5\2\uffff\1\u00f5\7\uffff\1\u00f4\1\uffff\1\u00fc\1\u00f5"+
            "\4\uffff\1\u00f2",
            "\1\u0104\14\uffff\1\u0108\6\uffff\1\u0107\6\uffff\1\u0102\14"+
            "\uffff\1\u0102\3\uffff\1\u0100\16\uffff\1\u0109\22\uffff\1\u0101"+
            "\6\uffff\1\u010a\1\u010b\1\u010c\35\uffff\1\u010f\6\uffff\1"+
            "\u0110\1\uffff\1\u010e\3\uffff\1\u010d\2\uffff\1\u0106\2\uffff"+
            "\1\u0106\7\uffff\1\u0105\1\uffff\1\u010d\1\u0106\4\uffff\1\u0103",
            "\1\u0114\14\uffff\1\u0118\6\uffff\1\u0117\6\uffff\1\u0112\14"+
            "\uffff\1\u0112\22\uffff\1\u0119\22\uffff\1\u0111\6\uffff\1\u011a"+
            "\1\u011b\1\u011c\35\uffff\1\u011f\6\uffff\1\u0120\1\uffff\1"+
            "\u011e\3\uffff\1\u011d\2\uffff\1\u0116\2\uffff\1\u0116\7\uffff"+
            "\1\u0115\1\uffff\1\u011d\1\u0116\4\uffff\1\u0113",
            "\1\u0123\14\uffff\1\u0127\6\uffff\1\u0126\6\uffff\1\u0121\14"+
            "\uffff\1\u0121\22\uffff\1\u0128\31\uffff\1\u0129\1\u012a\1\u012b"+
            "\35\uffff\1\u012e\6\uffff\1\u012f\1\uffff\1\u012d\3\uffff\1"+
            "\u012c\2\uffff\1\u0125\2\uffff\1\u0125\7\uffff\1\u0124\1\uffff"+
            "\1\u012c\1\u0125\4\uffff\1\u0122",
            "\1\u0131\14\uffff\1\u0135\6\uffff\1\u0134\46\uffff\1\u0136"+
            "\31\uffff\1\u0137\1\u0138\1\u0139\35\uffff\1\u013c\6\uffff\1"+
            "\u013d\1\uffff\1\u013b\3\uffff\1\u013a\2\uffff\1\u0133\2\uffff"+
            "\1\u0133\7\uffff\1\u0132\1\uffff\1\u013a\1\u0133\4\uffff\1\u0130",
            "\1\u013e\23\uffff\1\4\60\uffff\1\4\77\uffff\1\u0140\2\uffff"+
            "\1\u0140\7\uffff\1\u013f\2\uffff\1\u0140",
            "\1\u0149\13\uffff\1\u0155\6\uffff\1\u0145\52\uffff\1\u014e"+
            "\1\u0151\1\u0154\1\u0143\1\uffff\1\u0149\2\u0154\1\u014d\1\uffff"+
            "\1\u0144\1\u014b\1\u0154\1\u0147\1\u014c\1\u014a\1\u0154\1\u0148"+
            "\2\u014c\1\u0154\1\u014d\1\uffff\1\u0150\1\u0154\1\u0152\1\u0149"+
            "\1\u0154\1\u014a\1\u0154\1\u0148\1\u0153\1\u014b\1\u0154\1\uffff"+
            "\1\u014f\1\u0154\26\uffff\1\u0156\54\uffff\1\u0146",
            "\1\u015d\13\uffff\1\u0169\6\uffff\1\u0159\52\uffff\1\u0162"+
            "\1\u0165\1\u0168\1\u0157\1\uffff\1\u015d\2\u0168\1\u0161\1\uffff"+
            "\1\u0158\1\u015f\1\u0168\1\u015b\1\u0160\1\u015e\1\u0168\1\u015c"+
            "\2\u0160\1\u0168\1\u0161\1\uffff\1\u0164\1\u0168\1\u0166\1\u015d"+
            "\1\u0168\1\u015e\1\u0168\1\u015c\1\u0167\1\u015f\1\u0168\1\uffff"+
            "\1\u0163\1\u0168\26\uffff\1\u016a\54\uffff\1\u015a",
            "\1\u0171\13\uffff\1\u017d\6\uffff\1\u016d\52\uffff\1\u0176"+
            "\1\u0179\1\u017c\1\u016b\1\uffff\1\u0171\2\u017c\1\u0175\1\uffff"+
            "\1\u016c\1\u0173\1\u017c\1\u016f\1\u0174\1\u0172\1\u017c\1\u0170"+
            "\2\u0174\1\u017c\1\u0175\1\uffff\1\u0178\1\u017c\1\u017a\1\u0171"+
            "\1\u017c\1\u0172\1\u017c\1\u0170\1\u017b\1\u0173\1\u017c\1\uffff"+
            "\1\u0177\1\u017c\26\uffff\1\u017e\54\uffff\1\u016e",
            "\1\u0180\14\uffff\1\u017f\6\uffff\1\u0183\100\uffff\1\u0184"+
            "\57\uffff\1\u0182\2\uffff\1\u0182\7\uffff\1\u0181\2\uffff\1"+
            "\u0182",
            "\1\u0188\16\uffff\1\u0185\44\uffff\1\u0187\11\uffff\1\u0189"+
            "\2\uffff\1\u0193\6\uffff\1\u0192\4\uffff\1\u018a\1\uffff\1\u018e"+
            "\4\uffff\1\u018b\5\uffff\1\u018a\1\uffff\1\u018e\3\uffff\1\u018c"+
            "\16\uffff\1\u0194\22\uffff\1\u018d\6\uffff\1\u0195\1\u0196\1"+
            "\u0197\25\uffff\1\u018f\7\uffff\1\u019a\6\uffff\1\u019b\1\uffff"+
            "\1\u0199\3\uffff\1\u0198\2\uffff\1\u0191\2\uffff\1\u0191\7\uffff"+
            "\1\u0190\1\uffff\1\u0198\1\u0191\4\uffff\1\u0186",
            "\1\u019d\13\uffff\1\u01a9\61\uffff\1\u01a2\1\u01a5\1\u01a8"+
            "\2\uffff\1\u019d\2\u01a8\1\u01a1\2\uffff\1\u019f\1\u01a8\2\u01a0"+
            "\1\u019e\1\u01a8\1\u019c\2\u01a0\1\u01a8\1\u01a1\1\uffff\1\u01a4"+
            "\1\u01a8\1\u01a6\1\u019d\1\u01a8\1\u019e\1\u01a8\1\u019c\1\u01a7"+
            "\1\u019f\1\u01a8\1\uffff\1\u01a3\1\u01a8\26\uffff\1\u01aa",
            "\1\u01ac\13\uffff\1\u01b8\61\uffff\1\u01b1\1\u01b4\1\u01b7"+
            "\2\uffff\1\u01ac\2\u01b7\1\u01b0\2\uffff\1\u01ae\1\u01b7\2\u01af"+
            "\1\u01ad\1\u01b7\1\u01ab\2\u01af\1\u01b7\1\u01b0\1\uffff\1\u01b3"+
            "\1\u01b7\1\u01b5\1\u01ac\1\u01b7\1\u01ad\1\u01b7\1\u01ab\1\u01b6"+
            "\1\u01ae\1\u01b7\1\uffff\1\u01b2\1\u01b7\26\uffff\1\u01b9",
            "\1\u01bb\13\uffff\1\u01c7\61\uffff\1\u01c0\1\u01c3\1\u01c6"+
            "\2\uffff\1\u01bb\2\u01c6\1\u01bf\2\uffff\1\u01bd\1\u01c6\2\u01be"+
            "\1\u01bc\1\u01c6\1\u01ba\2\u01be\1\u01c6\1\u01bf\1\uffff\1\u01c2"+
            "\1\u01c6\1\u01c4\1\u01bb\1\u01c6\1\u01bc\1\u01c6\1\u01ba\1\u01c5"+
            "\1\u01bd\1\u01c6\1\uffff\1\u01c1\1\u01c6\26\uffff\1\u01c8",
            "\1\u01ca\13\uffff\1\u01d6\61\uffff\1\u01cf\1\u01d2\1\u01d5"+
            "\2\uffff\1\u01ca\2\u01d5\1\u01ce\2\uffff\1\u01cc\1\u01d5\2\u01cd"+
            "\1\u01cb\1\u01d5\1\u01c9\2\u01cd\1\u01d5\1\u01ce\1\uffff\1\u01d1"+
            "\1\u01d5\1\u01d3\1\u01ca\1\u01d5\1\u01cb\1\u01d5\1\u01c9\1\u01d4"+
            "\1\u01cc\1\u01d5\1\uffff\1\u01d0\1\u01d5\26\uffff\1\u01d7",
            "\1\u01d9\13\uffff\1\u01e5\61\uffff\1\u01de\1\u01e1\1\u01e4"+
            "\2\uffff\1\u01d9\2\u01e4\1\u01dd\2\uffff\1\u01db\1\u01e4\2\u01dc"+
            "\1\u01da\1\u01e4\1\u01d8\2\u01dc\1\u01e4\1\u01dd\1\uffff\1\u01e0"+
            "\1\u01e4\1\u01e2\1\u01d9\1\u01e4\1\u01da\1\u01e4\1\u01d8\1\u01e3"+
            "\1\u01db\1\u01e4\1\uffff\1\u01df\1\u01e4\26\uffff\1\u01e6",
            "\1\u01e7",
            "\1\u01e8",
            "\1\u01e9",
            "\1\12\13\uffff\1\4\6\uffff\1\u01eb\40\uffff\1\12\13\uffff\1"+
            "\4\3\uffff\2\4\2\uffff\1\u01ea\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u01ec\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "",
            "\1\u01f5\13\uffff\1\4\6\uffff\1\u01f7\40\uffff\1\12\13\uffff"+
            "\2\4\2\uffff\2\4\2\uffff\1\u01fd\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u01f8\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\u0209\11\uffff\1\u0202\2\uffff\1\u0201\6\uffff\1\u020c\4"+
            "\uffff\1\u0203\1\uffff\1\u0207\4\uffff\1\u0204\5\uffff\1\u0203"+
            "\1\uffff\1\u0207\3\uffff\1\u0205\16\uffff\1\u020d\22\uffff\1"+
            "\u0206\6\uffff\1\u020e\1\u020f\1\u0210\35\uffff\1\u0213\6\uffff"+
            "\1\u0214\1\uffff\1\u0212\3\uffff\1\u0211\2\uffff\1\u020b\2\uffff"+
            "\1\u020b\7\uffff\1\u020a\1\uffff\1\u0211\1\u020b\4\uffff\1\u0208",
            "\1\u021b\14\uffff\1\u021f\6\uffff\1\u021e\4\uffff\1\u0215\1"+
            "\uffff\1\u0219\4\uffff\1\u0216\5\uffff\1\u0215\1\uffff\1\u0219"+
            "\3\uffff\1\u0217\16\uffff\1\u0220\22\uffff\1\u0218\6\uffff\1"+
            "\u0221\1\u0222\1\u0223\35\uffff\1\u0226\6\uffff\1\u0227\1\uffff"+
            "\1\u0225\3\uffff\1\u0224\2\uffff\1\u021d\2\uffff\1\u021d\7\uffff"+
            "\1\u021c\1\uffff\1\u0224\1\u021d\4\uffff\1\u021a",
            "\1\u022d\14\uffff\1\u0231\6\uffff\1\u0230\6\uffff\1\u022b\4"+
            "\uffff\1\u0228\7\uffff\1\u022b\3\uffff\1\u0229\16\uffff\1\u0232"+
            "\22\uffff\1\u022a\6\uffff\1\u0233\1\u0234\1\u0235\35\uffff\1"+
            "\u0238\6\uffff\1\u0239\1\uffff\1\u0237\3\uffff\1\u0236\2\uffff"+
            "\1\u022f\2\uffff\1\u022f\7\uffff\1\u022e\1\uffff\1\u0236\1\u022f"+
            "\4\uffff\1\u022c",
            "\1\u023e\14\uffff\1\u0242\6\uffff\1\u0241\6\uffff\1\u023c\14"+
            "\uffff\1\u023c\3\uffff\1\u023a\16\uffff\1\u0243\22\uffff\1\u023b"+
            "\6\uffff\1\u0244\1\u0245\1\u0246\35\uffff\1\u0249\6\uffff\1"+
            "\u024a\1\uffff\1\u0248\3\uffff\1\u0247\2\uffff\1\u0240\2\uffff"+
            "\1\u0240\7\uffff\1\u023f\1\uffff\1\u0247\1\u0240\4\uffff\1\u023d",
            "\1\u024e\14\uffff\1\u0252\6\uffff\1\u0251\6\uffff\1\u024c\14"+
            "\uffff\1\u024c\22\uffff\1\u0253\22\uffff\1\u024b\6\uffff\1\u0254"+
            "\1\u0255\1\u0256\35\uffff\1\u0259\6\uffff\1\u025a\1\uffff\1"+
            "\u0258\3\uffff\1\u0257\2\uffff\1\u0250\2\uffff\1\u0250\7\uffff"+
            "\1\u024f\1\uffff\1\u0257\1\u0250\4\uffff\1\u024d",
            "\1\u025d\14\uffff\1\u0261\6\uffff\1\u0260\6\uffff\1\u025b\14"+
            "\uffff\1\u025b\22\uffff\1\u0262\31\uffff\1\u0263\1\u0264\1\u0265"+
            "\35\uffff\1\u0268\6\uffff\1\u0269\1\uffff\1\u0267\3\uffff\1"+
            "\u0266\2\uffff\1\u025f\2\uffff\1\u025f\7\uffff\1\u025e\1\uffff"+
            "\1\u0266\1\u025f\4\uffff\1\u025c",
            "\1\u026b\14\uffff\1\u026f\6\uffff\1\u026e\46\uffff\1\u0270"+
            "\31\uffff\1\u0271\1\u0272\1\u0273\35\uffff\1\u0276\6\uffff\1"+
            "\u0277\1\uffff\1\u0275\3\uffff\1\u0274\2\uffff\1\u026d\2\uffff"+
            "\1\u026d\7\uffff\1\u026c\1\uffff\1\u0274\1\u026d\4\uffff\1\u026a",
            "\1\u0278\u0084\uffff\1\u027a\2\uffff\1\u027a\7\uffff\1\u0279"+
            "\2\uffff\1\u027a",
            "\1\u0281\22\uffff\1\u027d\52\uffff\1\u0286\1\u0289\1\u028c"+
            "\1\u027b\1\uffff\1\u0281\2\u028c\1\u0285\1\uffff\1\u027c\1\u0283"+
            "\1\u028c\1\u027f\1\u0284\1\u0282\1\u028c\1\u0280\2\u0284\1\u028c"+
            "\1\u0285\1\uffff\1\u0288\1\u028c\1\u028a\1\u0281\1\u028c\1\u0282"+
            "\1\u028c\1\u0280\1\u028b\1\u0283\1\u028c\1\uffff\1\u0287\1\u028c"+
            "\30\uffff\1\u028d\52\uffff\1\u027e",
            "\1\u0294\22\uffff\1\u0290\52\uffff\1\u0299\1\u029c\1\u029f"+
            "\1\u028e\1\uffff\1\u0294\2\u029f\1\u0298\1\uffff\1\u028f\1\u0296"+
            "\1\u029f\1\u0292\1\u0297\1\u0295\1\u029f\1\u0293\2\u0297\1\u029f"+
            "\1\u0298\1\uffff\1\u029b\1\u029f\1\u029d\1\u0294\1\u029f\1\u0295"+
            "\1\u029f\1\u0293\1\u029e\1\u0296\1\u029f\1\uffff\1\u029a\1\u029f"+
            "\30\uffff\1\u02a0\52\uffff\1\u0291",
            "\1\u02a7\22\uffff\1\u02a3\52\uffff\1\u02ac\1\u02af\1\u02b2"+
            "\1\u02a1\1\uffff\1\u02a7\2\u02b2\1\u02ab\1\uffff\1\u02a2\1\u02a9"+
            "\1\u02b2\1\u02a5\1\u02aa\1\u02a8\1\u02b2\1\u02a6\2\u02aa\1\u02b2"+
            "\1\u02ab\1\uffff\1\u02ae\1\u02b2\1\u02b0\1\u02a7\1\u02b2\1\u02a8"+
            "\1\u02b2\1\u02a6\1\u02b1\1\u02a9\1\u02b2\1\uffff\1\u02ad\1\u02b2"+
            "\30\uffff\1\u02b3\52\uffff\1\u02a4",
            "\1\u02b5\14\uffff\1\u02b4\6\uffff\1\u02b8\100\uffff\1\u02b9"+
            "\57\uffff\1\u02b7\2\uffff\1\u02b7\7\uffff\1\u02b6\2\uffff\1"+
            "\u02b7",
            "\1\u02bd\16\uffff\1\u02ba\44\uffff\1\u02bc\11\uffff\1\u02be"+
            "\2\uffff\1\u02c8\6\uffff\1\u02c7\4\uffff\1\u02bf\1\uffff\1\u02c3"+
            "\4\uffff\1\u02c0\5\uffff\1\u02bf\1\uffff\1\u02c3\3\uffff\1\u02c1"+
            "\16\uffff\1\u02c9\22\uffff\1\u02c2\6\uffff\1\u02ca\1\u02cb\1"+
            "\u02cc\25\uffff\1\u02c4\7\uffff\1\u02cf\6\uffff\1\u02d0\1\uffff"+
            "\1\u02ce\3\uffff\1\u02cd\2\uffff\1\u02c6\2\uffff\1\u02c6\7\uffff"+
            "\1\u02c5\1\uffff\1\u02cd\1\u02c6\4\uffff\1\u02bb",
            "\1\u02d2\75\uffff\1\u02d7\1\u02da\1\u02dd\2\uffff\1\u02d2\2"+
            "\u02dd\1\u02d6\2\uffff\1\u02d4\1\u02dd\2\u02d5\1\u02d3\1\u02dd"+
            "\1\u02d1\2\u02d5\1\u02dd\1\u02d6\1\uffff\1\u02d9\1\u02dd\1\u02db"+
            "\1\u02d2\1\u02dd\1\u02d3\1\u02dd\1\u02d1\1\u02dc\1\u02d4\1\u02dd"+
            "\1\uffff\1\u02d8\1\u02dd\30\uffff\1\u02de",
            "\1\u02e0\75\uffff\1\u02e5\1\u02e8\1\u02eb\2\uffff\1\u02e0\2"+
            "\u02eb\1\u02e4\2\uffff\1\u02e2\1\u02eb\2\u02e3\1\u02e1\1\u02eb"+
            "\1\u02df\2\u02e3\1\u02eb\1\u02e4\1\uffff\1\u02e7\1\u02eb\1\u02e9"+
            "\1\u02e0\1\u02eb\1\u02e1\1\u02eb\1\u02df\1\u02ea\1\u02e2\1\u02eb"+
            "\1\uffff\1\u02e6\1\u02eb\30\uffff\1\u02ec",
            "\1\u02ee\75\uffff\1\u02f3\1\u02f6\1\u02f9\2\uffff\1\u02ee\2"+
            "\u02f9\1\u02f2\2\uffff\1\u02f0\1\u02f9\2\u02f1\1\u02ef\1\u02f9"+
            "\1\u02ed\2\u02f1\1\u02f9\1\u02f2\1\uffff\1\u02f5\1\u02f9\1\u02f7"+
            "\1\u02ee\1\u02f9\1\u02ef\1\u02f9\1\u02ed\1\u02f8\1\u02f0\1\u02f9"+
            "\1\uffff\1\u02f4\1\u02f9\30\uffff\1\u02fa",
            "\1\u02fc\75\uffff\1\u0301\1\u0304\1\u0307\2\uffff\1\u02fc\2"+
            "\u0307\1\u0300\2\uffff\1\u02fe\1\u0307\2\u02ff\1\u02fd\1\u0307"+
            "\1\u02fb\2\u02ff\1\u0307\1\u0300\1\uffff\1\u0303\1\u0307\1\u0305"+
            "\1\u02fc\1\u0307\1\u02fd\1\u0307\1\u02fb\1\u0306\1\u02fe\1\u0307"+
            "\1\uffff\1\u0302\1\u0307\30\uffff\1\u0308",
            "\1\u030a\75\uffff\1\u030f\1\u0312\1\u0315\2\uffff\1\u030a\2"+
            "\u0315\1\u030e\2\uffff\1\u030c\1\u0315\2\u030d\1\u030b\1\u0315"+
            "\1\u0309\2\u030d\1\u0315\1\u030e\1\uffff\1\u0311\1\u0315\1\u0313"+
            "\1\u030a\1\u0315\1\u030b\1\u0315\1\u0309\1\u0314\1\u030c\1\u0315"+
            "\1\uffff\1\u0310\1\u0315\30\uffff\1\u0316",
            "\1\u0317",
            "\1\u0318",
            "\1\u0319",
            "\1\12\13\uffff\1\4\6\uffff\1\u0321\40\uffff\1\12\13\uffff\1"+
            "\4\1\u031a\2\uffff\2\4\2\uffff\1\u031b\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0322\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u032d\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0326\2\uffff\2\4\2\uffff\1\u0327\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u032e\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0339\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0332\2\uffff\2\4\2\uffff\1\u0333\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u033a\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0345\40\uffff\1\12\13\uffff\1"+
            "\4\1\u033e\2\uffff\2\4\2\uffff\1\u033f\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0346\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0351\40\uffff\1\12\13\uffff\1"+
            "\4\1\u034a\2\uffff\2\4\2\uffff\1\u034b\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0352\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u035d\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0356\2\uffff\2\4\2\uffff\1\u0357\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u035e\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u036a\11\uffff\1\u0363\2\uffff\1\u0362\6\uffff\1\u036d\4"+
            "\uffff\1\u0364\1\uffff\1\u0368\4\uffff\1\u0365\5\uffff\1\u0364"+
            "\1\uffff\1\u0368\3\uffff\1\u0366\16\uffff\1\u036e\22\uffff\1"+
            "\u0367\6\uffff\1\u036f\1\u0370\1\u0371\35\uffff\1\u0374\6\uffff"+
            "\1\u0375\1\uffff\1\u0373\3\uffff\1\u0372\2\uffff\1\u036c\2\uffff"+
            "\1\u036c\7\uffff\1\u036b\1\uffff\1\u0372\1\u036c\4\uffff\1\u0369",
            "\1\u037c\14\uffff\1\u0380\6\uffff\1\u037f\4\uffff\1\u0376\1"+
            "\uffff\1\u037a\4\uffff\1\u0377\5\uffff\1\u0376\1\uffff\1\u037a"+
            "\3\uffff\1\u0378\16\uffff\1\u0381\22\uffff\1\u0379\6\uffff\1"+
            "\u0382\1\u0383\1\u0384\35\uffff\1\u0387\6\uffff\1\u0388\1\uffff"+
            "\1\u0386\3\uffff\1\u0385\2\uffff\1\u037e\2\uffff\1\u037e\7\uffff"+
            "\1\u037d\1\uffff\1\u0385\1\u037e\4\uffff\1\u037b",
            "\1\u038e\14\uffff\1\u0392\6\uffff\1\u0391\6\uffff\1\u038c\4"+
            "\uffff\1\u0389\7\uffff\1\u038c\3\uffff\1\u038a\16\uffff\1\u0393"+
            "\22\uffff\1\u038b\6\uffff\1\u0394\1\u0395\1\u0396\35\uffff\1"+
            "\u0399\6\uffff\1\u039a\1\uffff\1\u0398\3\uffff\1\u0397\2\uffff"+
            "\1\u0390\2\uffff\1\u0390\7\uffff\1\u038f\1\uffff\1\u0397\1\u0390"+
            "\4\uffff\1\u038d",
            "\1\u039f\14\uffff\1\u03a3\6\uffff\1\u03a2\6\uffff\1\u039d\14"+
            "\uffff\1\u039d\3\uffff\1\u039b\16\uffff\1\u03a4\22\uffff\1\u039c"+
            "\6\uffff\1\u03a5\1\u03a6\1\u03a7\35\uffff\1\u03aa\6\uffff\1"+
            "\u03ab\1\uffff\1\u03a9\3\uffff\1\u03a8\2\uffff\1\u03a1\2\uffff"+
            "\1\u03a1\7\uffff\1\u03a0\1\uffff\1\u03a8\1\u03a1\4\uffff\1\u039e",
            "\1\u03af\14\uffff\1\u03b3\6\uffff\1\u03b2\6\uffff\1\u03ad\14"+
            "\uffff\1\u03ad\22\uffff\1\u03b4\22\uffff\1\u03ac\6\uffff\1\u03b5"+
            "\1\u03b6\1\u03b7\35\uffff\1\u03ba\6\uffff\1\u03bb\1\uffff\1"+
            "\u03b9\3\uffff\1\u03b8\2\uffff\1\u03b1\2\uffff\1\u03b1\7\uffff"+
            "\1\u03b0\1\uffff\1\u03b8\1\u03b1\4\uffff\1\u03ae",
            "\1\u03be\14\uffff\1\u03c2\6\uffff\1\u03c1\6\uffff\1\u03bc\14"+
            "\uffff\1\u03bc\22\uffff\1\u03c3\31\uffff\1\u03c4\1\u03c5\1\u03c6"+
            "\35\uffff\1\u03c9\6\uffff\1\u03ca\1\uffff\1\u03c8\3\uffff\1"+
            "\u03c7\2\uffff\1\u03c0\2\uffff\1\u03c0\7\uffff\1\u03bf\1\uffff"+
            "\1\u03c7\1\u03c0\4\uffff\1\u03bd",
            "\1\u03cc\14\uffff\1\u03d0\6\uffff\1\u03cf\46\uffff\1\u03d1"+
            "\31\uffff\1\u03d2\1\u03d3\1\u03d4\35\uffff\1\u03d7\6\uffff\1"+
            "\u03d8\1\uffff\1\u03d6\3\uffff\1\u03d5\2\uffff\1\u03ce\2\uffff"+
            "\1\u03ce\7\uffff\1\u03cd\1\uffff\1\u03d5\1\u03ce\4\uffff\1\u03cb",
            "\1\u03d9\u0084\uffff\1\u03db\2\uffff\1\u03db\7\uffff\1\u03da"+
            "\2\uffff\1\u03db",
            "\1\u03e2\13\uffff\1\u03ee\6\uffff\1\u03de\52\uffff\1\u03e7"+
            "\1\u03ea\1\u03ed\1\u03dc\1\uffff\1\u03e2\2\u03ed\1\u03e6\1\uffff"+
            "\1\u03dd\1\u03e4\1\u03ed\1\u03e0\1\u03e5\1\u03e3\1\u03ed\1\u03e1"+
            "\2\u03e5\1\u03ed\1\u03e6\1\uffff\1\u03e9\1\u03ed\1\u03eb\1\u03e2"+
            "\1\u03ed\1\u03e3\1\u03ed\1\u03e1\1\u03ec\1\u03e4\1\u03ed\1\uffff"+
            "\1\u03e8\1\u03ed\26\uffff\1\u03ef\54\uffff\1\u03df",
            "\1\u03f6\13\uffff\1\u0402\6\uffff\1\u03f2\52\uffff\1\u03fb"+
            "\1\u03fe\1\u0401\1\u03f0\1\uffff\1\u03f6\2\u0401\1\u03fa\1\uffff"+
            "\1\u03f1\1\u03f8\1\u0401\1\u03f4\1\u03f9\1\u03f7\1\u0401\1\u03f5"+
            "\2\u03f9\1\u0401\1\u03fa\1\uffff\1\u03fd\1\u0401\1\u03ff\1\u03f6"+
            "\1\u0401\1\u03f7\1\u0401\1\u03f5\1\u0400\1\u03f8\1\u0401\1\uffff"+
            "\1\u03fc\1\u0401\26\uffff\1\u0403\54\uffff\1\u03f3",
            "\1\u040a\13\uffff\1\u0416\6\uffff\1\u0406\52\uffff\1\u040f"+
            "\1\u0412\1\u0415\1\u0404\1\uffff\1\u040a\2\u0415\1\u040e\1\uffff"+
            "\1\u0405\1\u040c\1\u0415\1\u0408\1\u040d\1\u040b\1\u0415\1\u0409"+
            "\2\u040d\1\u0415\1\u040e\1\uffff\1\u0411\1\u0415\1\u0413\1\u040a"+
            "\1\u0415\1\u040b\1\u0415\1\u0409\1\u0414\1\u040c\1\u0415\1\uffff"+
            "\1\u0410\1\u0415\26\uffff\1\u0417\54\uffff\1\u0407",
            "\1\u0419\14\uffff\1\u0418\6\uffff\1\u041c\100\uffff\1\u041d"+
            "\57\uffff\1\u041b\2\uffff\1\u041b\7\uffff\1\u041a\2\uffff\1"+
            "\u041b",
            "\1\u0421\16\uffff\1\u041e\44\uffff\1\u0420\11\uffff\1\u0422"+
            "\2\uffff\1\u042c\6\uffff\1\u042b\4\uffff\1\u0423\1\uffff\1\u0427"+
            "\4\uffff\1\u0424\5\uffff\1\u0423\1\uffff\1\u0427\3\uffff\1\u0425"+
            "\16\uffff\1\u042d\22\uffff\1\u0426\6\uffff\1\u042e\1\u042f\1"+
            "\u0430\25\uffff\1\u0428\7\uffff\1\u0433\6\uffff\1\u0434\1\uffff"+
            "\1\u0432\3\uffff\1\u0431\2\uffff\1\u042a\2\uffff\1\u042a\7\uffff"+
            "\1\u0429\1\uffff\1\u0431\1\u042a\4\uffff\1\u041f",
            "\1\u0436\13\uffff\1\u0442\61\uffff\1\u043b\1\u043e\1\u0441"+
            "\2\uffff\1\u0436\2\u0441\1\u043a\2\uffff\1\u0438\1\u0441\2\u0439"+
            "\1\u0437\1\u0441\1\u0435\2\u0439\1\u0441\1\u043a\1\uffff\1\u043d"+
            "\1\u0441\1\u043f\1\u0436\1\u0441\1\u0437\1\u0441\1\u0435\1\u0440"+
            "\1\u0438\1\u0441\1\uffff\1\u043c\1\u0441\26\uffff\1\u0443",
            "\1\u0445\13\uffff\1\u0451\61\uffff\1\u044a\1\u044d\1\u0450"+
            "\2\uffff\1\u0445\2\u0450\1\u0449\2\uffff\1\u0447\1\u0450\2\u0448"+
            "\1\u0446\1\u0450\1\u0444\2\u0448\1\u0450\1\u0449\1\uffff\1\u044c"+
            "\1\u0450\1\u044e\1\u0445\1\u0450\1\u0446\1\u0450\1\u0444\1\u044f"+
            "\1\u0447\1\u0450\1\uffff\1\u044b\1\u0450\26\uffff\1\u0452",
            "\1\u0454\13\uffff\1\u0460\61\uffff\1\u0459\1\u045c\1\u045f"+
            "\2\uffff\1\u0454\2\u045f\1\u0458\2\uffff\1\u0456\1\u045f\2\u0457"+
            "\1\u0455\1\u045f\1\u0453\2\u0457\1\u045f\1\u0458\1\uffff\1\u045b"+
            "\1\u045f\1\u045d\1\u0454\1\u045f\1\u0455\1\u045f\1\u0453\1\u045e"+
            "\1\u0456\1\u045f\1\uffff\1\u045a\1\u045f\26\uffff\1\u0461",
            "\1\u0463\13\uffff\1\u046f\61\uffff\1\u0468\1\u046b\1\u046e"+
            "\2\uffff\1\u0463\2\u046e\1\u0467\2\uffff\1\u0465\1\u046e\2\u0466"+
            "\1\u0464\1\u046e\1\u0462\2\u0466\1\u046e\1\u0467\1\uffff\1\u046a"+
            "\1\u046e\1\u046c\1\u0463\1\u046e\1\u0464\1\u046e\1\u0462\1\u046d"+
            "\1\u0465\1\u046e\1\uffff\1\u0469\1\u046e\26\uffff\1\u0470",
            "\1\u0472\13\uffff\1\u047e\61\uffff\1\u0477\1\u047a\1\u047d"+
            "\2\uffff\1\u0472\2\u047d\1\u0476\2\uffff\1\u0474\1\u047d\2\u0475"+
            "\1\u0473\1\u047d\1\u0471\2\u0475\1\u047d\1\u0476\1\uffff\1\u0479"+
            "\1\u047d\1\u047b\1\u0472\1\u047d\1\u0473\1\u047d\1\u0471\1\u047c"+
            "\1\u0474\1\u047d\1\uffff\1\u0478\1\u047d\26\uffff\1\u047f",
            "\1\u0480",
            "\1\u0481",
            "\1\u0482",
            "\1\12\13\uffff\1\4\6\uffff\1\u0484\40\uffff\1\12\13\uffff\1"+
            "\4\3\uffff\2\4\2\uffff\1\u0483\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0485\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\u0496\11\uffff\1\u048f\2\uffff\1\u048e\6\uffff\1\u0499\4"+
            "\uffff\1\u0490\1\uffff\1\u0494\4\uffff\1\u0491\5\uffff\1\u0490"+
            "\1\uffff\1\u0494\3\uffff\1\u0492\16\uffff\1\u049a\22\uffff\1"+
            "\u0493\6\uffff\1\u049b\1\u049c\1\u049d\35\uffff\1\u04a0\6\uffff"+
            "\1\u04a1\1\uffff\1\u049f\3\uffff\1\u049e\2\uffff\1\u0498\2\uffff"+
            "\1\u0498\7\uffff\1\u0497\1\uffff\1\u049e\1\u0498\4\uffff\1\u0495",
            "\1\u04a8\14\uffff\1\u04ac\6\uffff\1\u04ab\4\uffff\1\u04a2\1"+
            "\uffff\1\u04a6\4\uffff\1\u04a3\5\uffff\1\u04a2\1\uffff\1\u04a6"+
            "\3\uffff\1\u04a4\16\uffff\1\u04ad\22\uffff\1\u04a5\6\uffff\1"+
            "\u04ae\1\u04af\1\u04b0\35\uffff\1\u04b3\6\uffff\1\u04b4\1\uffff"+
            "\1\u04b2\3\uffff\1\u04b1\2\uffff\1\u04aa\2\uffff\1\u04aa\7\uffff"+
            "\1\u04a9\1\uffff\1\u04b1\1\u04aa\4\uffff\1\u04a7",
            "\1\u04ba\14\uffff\1\u04be\6\uffff\1\u04bd\6\uffff\1\u04b8\4"+
            "\uffff\1\u04b5\7\uffff\1\u04b8\3\uffff\1\u04b6\16\uffff\1\u04bf"+
            "\22\uffff\1\u04b7\6\uffff\1\u04c0\1\u04c1\1\u04c2\35\uffff\1"+
            "\u04c5\6\uffff\1\u04c6\1\uffff\1\u04c4\3\uffff\1\u04c3\2\uffff"+
            "\1\u04bc\2\uffff\1\u04bc\7\uffff\1\u04bb\1\uffff\1\u04c3\1\u04bc"+
            "\4\uffff\1\u04b9",
            "\1\u04cb\14\uffff\1\u04cf\6\uffff\1\u04ce\6\uffff\1\u04c9\14"+
            "\uffff\1\u04c9\3\uffff\1\u04c7\16\uffff\1\u04d0\22\uffff\1\u04c8"+
            "\6\uffff\1\u04d1\1\u04d2\1\u04d3\35\uffff\1\u04d6\6\uffff\1"+
            "\u04d7\1\uffff\1\u04d5\3\uffff\1\u04d4\2\uffff\1\u04cd\2\uffff"+
            "\1\u04cd\7\uffff\1\u04cc\1\uffff\1\u04d4\1\u04cd\4\uffff\1\u04ca",
            "\1\u04db\14\uffff\1\u04df\6\uffff\1\u04de\6\uffff\1\u04d9\14"+
            "\uffff\1\u04d9\22\uffff\1\u04e0\22\uffff\1\u04d8\6\uffff\1\u04e1"+
            "\1\u04e2\1\u04e3\35\uffff\1\u04e6\6\uffff\1\u04e7\1\uffff\1"+
            "\u04e5\3\uffff\1\u04e4\2\uffff\1\u04dd\2\uffff\1\u04dd\7\uffff"+
            "\1\u04dc\1\uffff\1\u04e4\1\u04dd\4\uffff\1\u04da",
            "\1\u04ea\14\uffff\1\u04ee\6\uffff\1\u04ed\6\uffff\1\u04e8\14"+
            "\uffff\1\u04e8\22\uffff\1\u04ef\31\uffff\1\u04f0\1\u04f1\1\u04f2"+
            "\35\uffff\1\u04f5\6\uffff\1\u04f6\1\uffff\1\u04f4\3\uffff\1"+
            "\u04f3\2\uffff\1\u04ec\2\uffff\1\u04ec\7\uffff\1\u04eb\1\uffff"+
            "\1\u04f3\1\u04ec\4\uffff\1\u04e9",
            "\1\u04f8\14\uffff\1\u04fc\6\uffff\1\u04fb\46\uffff\1\u04fd"+
            "\31\uffff\1\u04fe\1\u04ff\1\u0500\35\uffff\1\u0503\6\uffff\1"+
            "\u0504\1\uffff\1\u0502\3\uffff\1\u0501\2\uffff\1\u04fa\2\uffff"+
            "\1\u04fa\7\uffff\1\u04f9\1\uffff\1\u0501\1\u04fa\4\uffff\1\u04f7",
            "\1\u0505\u0084\uffff\1\u0507\2\uffff\1\u0507\7\uffff\1\u0506"+
            "\2\uffff\1\u0507",
            "\1\u050e\22\uffff\1\u050a\52\uffff\1\u0513\1\u0516\1\u0519"+
            "\1\u0508\1\uffff\1\u050e\2\u0519\1\u0512\1\uffff\1\u0509\1\u0510"+
            "\1\u0519\1\u050c\1\u0511\1\u050f\1\u0519\1\u050d\2\u0511\1\u0519"+
            "\1\u0512\1\uffff\1\u0515\1\u0519\1\u0517\1\u050e\1\u0519\1\u050f"+
            "\1\u0519\1\u050d\1\u0518\1\u0510\1\u0519\1\uffff\1\u0514\1\u0519"+
            "\30\uffff\1\u051a\52\uffff\1\u050b",
            "\1\u0521\22\uffff\1\u051d\52\uffff\1\u0526\1\u0529\1\u052c"+
            "\1\u051b\1\uffff\1\u0521\2\u052c\1\u0525\1\uffff\1\u051c\1\u0523"+
            "\1\u052c\1\u051f\1\u0524\1\u0522\1\u052c\1\u0520\2\u0524\1\u052c"+
            "\1\u0525\1\uffff\1\u0528\1\u052c\1\u052a\1\u0521\1\u052c\1\u0522"+
            "\1\u052c\1\u0520\1\u052b\1\u0523\1\u052c\1\uffff\1\u0527\1\u052c"+
            "\30\uffff\1\u052d\52\uffff\1\u051e",
            "\1\u0534\22\uffff\1\u0530\52\uffff\1\u0539\1\u053c\1\u053f"+
            "\1\u052e\1\uffff\1\u0534\2\u053f\1\u0538\1\uffff\1\u052f\1\u0536"+
            "\1\u053f\1\u0532\1\u0537\1\u0535\1\u053f\1\u0533\2\u0537\1\u053f"+
            "\1\u0538\1\uffff\1\u053b\1\u053f\1\u053d\1\u0534\1\u053f\1\u0535"+
            "\1\u053f\1\u0533\1\u053e\1\u0536\1\u053f\1\uffff\1\u053a\1\u053f"+
            "\30\uffff\1\u0540\52\uffff\1\u0531",
            "\1\u0542\14\uffff\1\u0541\6\uffff\1\u0545\100\uffff\1\u0546"+
            "\57\uffff\1\u0544\2\uffff\1\u0544\7\uffff\1\u0543\2\uffff\1"+
            "\u0544",
            "\1\u054a\16\uffff\1\u0547\44\uffff\1\u0549\11\uffff\1\u054b"+
            "\2\uffff\1\u0555\6\uffff\1\u0554\4\uffff\1\u054c\1\uffff\1\u0550"+
            "\4\uffff\1\u054d\5\uffff\1\u054c\1\uffff\1\u0550\3\uffff\1\u054e"+
            "\16\uffff\1\u0556\22\uffff\1\u054f\6\uffff\1\u0557\1\u0558\1"+
            "\u0559\25\uffff\1\u0551\7\uffff\1\u055c\6\uffff\1\u055d\1\uffff"+
            "\1\u055b\3\uffff\1\u055a\2\uffff\1\u0553\2\uffff\1\u0553\7\uffff"+
            "\1\u0552\1\uffff\1\u055a\1\u0553\4\uffff\1\u0548",
            "\1\u055f\75\uffff\1\u0564\1\u0567\1\u056a\2\uffff\1\u055f\2"+
            "\u056a\1\u0563\2\uffff\1\u0561\1\u056a\2\u0562\1\u0560\1\u056a"+
            "\1\u055e\2\u0562\1\u056a\1\u0563\1\uffff\1\u0566\1\u056a\1\u0568"+
            "\1\u055f\1\u056a\1\u0560\1\u056a\1\u055e\1\u0569\1\u0561\1\u056a"+
            "\1\uffff\1\u0565\1\u056a\30\uffff\1\u056b",
            "\1\u056d\75\uffff\1\u0572\1\u0575\1\u0578\2\uffff\1\u056d\2"+
            "\u0578\1\u0571\2\uffff\1\u056f\1\u0578\2\u0570\1\u056e\1\u0578"+
            "\1\u056c\2\u0570\1\u0578\1\u0571\1\uffff\1\u0574\1\u0578\1\u0576"+
            "\1\u056d\1\u0578\1\u056e\1\u0578\1\u056c\1\u0577\1\u056f\1\u0578"+
            "\1\uffff\1\u0573\1\u0578\30\uffff\1\u0579",
            "\1\u057b\75\uffff\1\u0580\1\u0583\1\u0586\2\uffff\1\u057b\2"+
            "\u0586\1\u057f\2\uffff\1\u057d\1\u0586\2\u057e\1\u057c\1\u0586"+
            "\1\u057a\2\u057e\1\u0586\1\u057f\1\uffff\1\u0582\1\u0586\1\u0584"+
            "\1\u057b\1\u0586\1\u057c\1\u0586\1\u057a\1\u0585\1\u057d\1\u0586"+
            "\1\uffff\1\u0581\1\u0586\30\uffff\1\u0587",
            "\1\u0589\75\uffff\1\u058e\1\u0591\1\u0594\2\uffff\1\u0589\2"+
            "\u0594\1\u058d\2\uffff\1\u058b\1\u0594\2\u058c\1\u058a\1\u0594"+
            "\1\u0588\2\u058c\1\u0594\1\u058d\1\uffff\1\u0590\1\u0594\1\u0592"+
            "\1\u0589\1\u0594\1\u058a\1\u0594\1\u0588\1\u0593\1\u058b\1\u0594"+
            "\1\uffff\1\u058f\1\u0594\30\uffff\1\u0595",
            "\1\u0597\75\uffff\1\u059c\1\u059f\1\u05a2\2\uffff\1\u0597\2"+
            "\u05a2\1\u059b\2\uffff\1\u0599\1\u05a2\2\u059a\1\u0598\1\u05a2"+
            "\1\u0596\2\u059a\1\u05a2\1\u059b\1\uffff\1\u059e\1\u05a2\1\u05a0"+
            "\1\u0597\1\u05a2\1\u0598\1\u05a2\1\u0596\1\u05a1\1\u0599\1\u05a2"+
            "\1\uffff\1\u059d\1\u05a2\30\uffff\1\u05a3",
            "\1\u05a4",
            "\1\u05a5",
            "\1\u05a6",
            "\1\12\13\uffff\1\4\6\uffff\1\u05a7\40\uffff\1\12\13\uffff\1"+
            "\4\3\uffff\2\4\2\uffff\1\u05ae\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05a8\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05b9\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05b2\2\uffff\2\4\2\uffff\1\u05b3\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05ba\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05c5\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05be\2\uffff\2\4\2\uffff\1\u05bf\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05c6\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05d1\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05ca\2\uffff\2\4\2\uffff\1\u05cb\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05d2\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05dd\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05d6\2\uffff\2\4\2\uffff\1\u05d7\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05de\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05e9\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05e2\2\uffff\2\4\2\uffff\1\u05e3\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05ea\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u05f5\40\uffff\1\12\13\uffff\1"+
            "\4\1\u05ee\2\uffff\2\4\2\uffff\1\u05ef\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u05f6\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\u0602\11\uffff\1\u05fb\2\uffff\1\u05fa\6\uffff\1\u0605\4"+
            "\uffff\1\u05fc\1\uffff\1\u0600\4\uffff\1\u05fd\5\uffff\1\u05fc"+
            "\1\uffff\1\u0600\3\uffff\1\u05fe\16\uffff\1\u0606\22\uffff\1"+
            "\u05ff\6\uffff\1\u0607\1\u0608\1\u0609\35\uffff\1\u060c\6\uffff"+
            "\1\u060d\1\uffff\1\u060b\3\uffff\1\u060a\2\uffff\1\u0604\2\uffff"+
            "\1\u0604\7\uffff\1\u0603\1\uffff\1\u060a\1\u0604\4\uffff\1\u0601",
            "\1\u0614\14\uffff\1\u0618\6\uffff\1\u0617\4\uffff\1\u060e\1"+
            "\uffff\1\u0612\4\uffff\1\u060f\5\uffff\1\u060e\1\uffff\1\u0612"+
            "\3\uffff\1\u0610\16\uffff\1\u0619\22\uffff\1\u0611\6\uffff\1"+
            "\u061a\1\u061b\1\u061c\35\uffff\1\u061f\6\uffff\1\u0620\1\uffff"+
            "\1\u061e\3\uffff\1\u061d\2\uffff\1\u0616\2\uffff\1\u0616\7\uffff"+
            "\1\u0615\1\uffff\1\u061d\1\u0616\4\uffff\1\u0613",
            "\1\u0626\14\uffff\1\u062a\6\uffff\1\u0629\6\uffff\1\u0624\4"+
            "\uffff\1\u0621\7\uffff\1\u0624\3\uffff\1\u0622\16\uffff\1\u062b"+
            "\22\uffff\1\u0623\6\uffff\1\u062c\1\u062d\1\u062e\35\uffff\1"+
            "\u0631\6\uffff\1\u0632\1\uffff\1\u0630\3\uffff\1\u062f\2\uffff"+
            "\1\u0628\2\uffff\1\u0628\7\uffff\1\u0627\1\uffff\1\u062f\1\u0628"+
            "\4\uffff\1\u0625",
            "\1\u0637\14\uffff\1\u063b\6\uffff\1\u063a\6\uffff\1\u0635\14"+
            "\uffff\1\u0635\3\uffff\1\u0633\16\uffff\1\u063c\22\uffff\1\u0634"+
            "\6\uffff\1\u063d\1\u063e\1\u063f\35\uffff\1\u0642\6\uffff\1"+
            "\u0643\1\uffff\1\u0641\3\uffff\1\u0640\2\uffff\1\u0639\2\uffff"+
            "\1\u0639\7\uffff\1\u0638\1\uffff\1\u0640\1\u0639\4\uffff\1\u0636",
            "\1\u0647\14\uffff\1\u064b\6\uffff\1\u064a\6\uffff\1\u0645\14"+
            "\uffff\1\u0645\22\uffff\1\u064c\22\uffff\1\u0644\6\uffff\1\u064d"+
            "\1\u064e\1\u064f\35\uffff\1\u0652\6\uffff\1\u0653\1\uffff\1"+
            "\u0651\3\uffff\1\u0650\2\uffff\1\u0649\2\uffff\1\u0649\7\uffff"+
            "\1\u0648\1\uffff\1\u0650\1\u0649\4\uffff\1\u0646",
            "\1\u0656\14\uffff\1\u065a\6\uffff\1\u0659\6\uffff\1\u0654\14"+
            "\uffff\1\u0654\22\uffff\1\u065b\31\uffff\1\u065c\1\u065d\1\u065e"+
            "\35\uffff\1\u0661\6\uffff\1\u0662\1\uffff\1\u0660\3\uffff\1"+
            "\u065f\2\uffff\1\u0658\2\uffff\1\u0658\7\uffff\1\u0657\1\uffff"+
            "\1\u065f\1\u0658\4\uffff\1\u0655",
            "\1\u0664\14\uffff\1\u0668\6\uffff\1\u0667\46\uffff\1\u0669"+
            "\31\uffff\1\u066a\1\u066b\1\u066c\35\uffff\1\u066f\6\uffff\1"+
            "\u0670\1\uffff\1\u066e\3\uffff\1\u066d\2\uffff\1\u0666\2\uffff"+
            "\1\u0666\7\uffff\1\u0665\1\uffff\1\u066d\1\u0666\4\uffff\1\u0663",
            "\1\u0671\u0084\uffff\1\u0673\2\uffff\1\u0673\7\uffff\1\u0672"+
            "\2\uffff\1\u0673",
            "\1\u067a\13\uffff\1\u0686\6\uffff\1\u0676\52\uffff\1\u067f"+
            "\1\u0682\1\u0685\1\u0674\1\uffff\1\u067a\2\u0685\1\u067e\1\uffff"+
            "\1\u0675\1\u067c\1\u0685\1\u0678\1\u067d\1\u067b\1\u0685\1\u0679"+
            "\2\u067d\1\u0685\1\u067e\1\uffff\1\u0681\1\u0685\1\u0683\1\u067a"+
            "\1\u0685\1\u067b\1\u0685\1\u0679\1\u0684\1\u067c\1\u0685\1\uffff"+
            "\1\u0680\1\u0685\26\uffff\1\u0687\54\uffff\1\u0677",
            "\1\u068e\13\uffff\1\u069a\6\uffff\1\u068a\52\uffff\1\u0693"+
            "\1\u0696\1\u0699\1\u0688\1\uffff\1\u068e\2\u0699\1\u0692\1\uffff"+
            "\1\u0689\1\u0690\1\u0699\1\u068c\1\u0691\1\u068f\1\u0699\1\u068d"+
            "\2\u0691\1\u0699\1\u0692\1\uffff\1\u0695\1\u0699\1\u0697\1\u068e"+
            "\1\u0699\1\u068f\1\u0699\1\u068d\1\u0698\1\u0690\1\u0699\1\uffff"+
            "\1\u0694\1\u0699\26\uffff\1\u069b\54\uffff\1\u068b",
            "\1\u06a2\13\uffff\1\u06ae\6\uffff\1\u069e\52\uffff\1\u06a7"+
            "\1\u06aa\1\u06ad\1\u069c\1\uffff\1\u06a2\2\u06ad\1\u06a6\1\uffff"+
            "\1\u069d\1\u06a4\1\u06ad\1\u06a0\1\u06a5\1\u06a3\1\u06ad\1\u06a1"+
            "\2\u06a5\1\u06ad\1\u06a6\1\uffff\1\u06a9\1\u06ad\1\u06ab\1\u06a2"+
            "\1\u06ad\1\u06a3\1\u06ad\1\u06a1\1\u06ac\1\u06a4\1\u06ad\1\uffff"+
            "\1\u06a8\1\u06ad\26\uffff\1\u06af\54\uffff\1\u069f",
            "\1\u06b1\14\uffff\1\u06b0\6\uffff\1\u06b4\100\uffff\1\u06b5"+
            "\57\uffff\1\u06b3\2\uffff\1\u06b3\7\uffff\1\u06b2\2\uffff\1"+
            "\u06b3",
            "\1\u06b9\16\uffff\1\u06b6\44\uffff\1\u06b8\11\uffff\1\u06ba"+
            "\2\uffff\1\u06c4\6\uffff\1\u06c3\4\uffff\1\u06bb\1\uffff\1\u06bf"+
            "\4\uffff\1\u06bc\5\uffff\1\u06bb\1\uffff\1\u06bf\3\uffff\1\u06bd"+
            "\16\uffff\1\u06c5\22\uffff\1\u06be\6\uffff\1\u06c6\1\u06c7\1"+
            "\u06c8\25\uffff\1\u06c0\7\uffff\1\u06cb\6\uffff\1\u06cc\1\uffff"+
            "\1\u06ca\3\uffff\1\u06c9\2\uffff\1\u06c2\2\uffff\1\u06c2\7\uffff"+
            "\1\u06c1\1\uffff\1\u06c9\1\u06c2\4\uffff\1\u06b7",
            "\1\u06ce\13\uffff\1\u06da\61\uffff\1\u06d3\1\u06d6\1\u06d9"+
            "\2\uffff\1\u06ce\2\u06d9\1\u06d2\2\uffff\1\u06d0\1\u06d9\2\u06d1"+
            "\1\u06cf\1\u06d9\1\u06cd\2\u06d1\1\u06d9\1\u06d2\1\uffff\1\u06d5"+
            "\1\u06d9\1\u06d7\1\u06ce\1\u06d9\1\u06cf\1\u06d9\1\u06cd\1\u06d8"+
            "\1\u06d0\1\u06d9\1\uffff\1\u06d4\1\u06d9\26\uffff\1\u06db",
            "\1\u06dd\13\uffff\1\u06e9\61\uffff\1\u06e2\1\u06e5\1\u06e8"+
            "\2\uffff\1\u06dd\2\u06e8\1\u06e1\2\uffff\1\u06df\1\u06e8\2\u06e0"+
            "\1\u06de\1\u06e8\1\u06dc\2\u06e0\1\u06e8\1\u06e1\1\uffff\1\u06e4"+
            "\1\u06e8\1\u06e6\1\u06dd\1\u06e8\1\u06de\1\u06e8\1\u06dc\1\u06e7"+
            "\1\u06df\1\u06e8\1\uffff\1\u06e3\1\u06e8\26\uffff\1\u06ea",
            "\1\u06ec\13\uffff\1\u06f8\61\uffff\1\u06f1\1\u06f4\1\u06f7"+
            "\2\uffff\1\u06ec\2\u06f7\1\u06f0\2\uffff\1\u06ee\1\u06f7\2\u06ef"+
            "\1\u06ed\1\u06f7\1\u06eb\2\u06ef\1\u06f7\1\u06f0\1\uffff\1\u06f3"+
            "\1\u06f7\1\u06f5\1\u06ec\1\u06f7\1\u06ed\1\u06f7\1\u06eb\1\u06f6"+
            "\1\u06ee\1\u06f7\1\uffff\1\u06f2\1\u06f7\26\uffff\1\u06f9",
            "\1\u06fb\13\uffff\1\u0707\61\uffff\1\u0700\1\u0703\1\u0706"+
            "\2\uffff\1\u06fb\2\u0706\1\u06ff\2\uffff\1\u06fd\1\u0706\2\u06fe"+
            "\1\u06fc\1\u0706\1\u06fa\2\u06fe\1\u0706\1\u06ff\1\uffff\1\u0702"+
            "\1\u0706\1\u0704\1\u06fb\1\u0706\1\u06fc\1\u0706\1\u06fa\1\u0705"+
            "\1\u06fd\1\u0706\1\uffff\1\u0701\1\u0706\26\uffff\1\u0708",
            "\1\u070a\13\uffff\1\u0716\61\uffff\1\u070f\1\u0712\1\u0715"+
            "\2\uffff\1\u070a\2\u0715\1\u070e\2\uffff\1\u070c\1\u0715\2\u070d"+
            "\1\u070b\1\u0715\1\u0709\2\u070d\1\u0715\1\u070e\1\uffff\1\u0711"+
            "\1\u0715\1\u0713\1\u070a\1\u0715\1\u070b\1\u0715\1\u0709\1\u0714"+
            "\1\u070c\1\u0715\1\uffff\1\u0710\1\u0715\26\uffff\1\u0717",
            "\1\u0718",
            "\1\u0719",
            "\1\u071a",
            "\1\12\13\uffff\1\4\6\uffff\1\u071c\40\uffff\1\12\13\uffff\1"+
            "\4\3\uffff\2\4\2\uffff\1\u071b\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u071d\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\u072e\11\uffff\1\u0727\2\uffff\1\u0726\6\uffff\1\u0731\4"+
            "\uffff\1\u0728\1\uffff\1\u072c\4\uffff\1\u0729\5\uffff\1\u0728"+
            "\1\uffff\1\u072c\3\uffff\1\u072a\16\uffff\1\u0732\22\uffff\1"+
            "\u072b\6\uffff\1\u0733\1\u0734\1\u0735\35\uffff\1\u0738\6\uffff"+
            "\1\u0739\1\uffff\1\u0737\3\uffff\1\u0736\2\uffff\1\u0730\2\uffff"+
            "\1\u0730\7\uffff\1\u072f\1\uffff\1\u0736\1\u0730\4\uffff\1\u072d",
            "\1\u0740\14\uffff\1\u0744\6\uffff\1\u0743\4\uffff\1\u073a\1"+
            "\uffff\1\u073e\4\uffff\1\u073b\5\uffff\1\u073a\1\uffff\1\u073e"+
            "\3\uffff\1\u073c\16\uffff\1\u0745\22\uffff\1\u073d\6\uffff\1"+
            "\u0746\1\u0747\1\u0748\35\uffff\1\u074b\6\uffff\1\u074c\1\uffff"+
            "\1\u074a\3\uffff\1\u0749\2\uffff\1\u0742\2\uffff\1\u0742\7\uffff"+
            "\1\u0741\1\uffff\1\u0749\1\u0742\4\uffff\1\u073f",
            "\1\u0752\14\uffff\1\u0756\6\uffff\1\u0755\6\uffff\1\u0750\4"+
            "\uffff\1\u074d\7\uffff\1\u0750\3\uffff\1\u074e\16\uffff\1\u0757"+
            "\22\uffff\1\u074f\6\uffff\1\u0758\1\u0759\1\u075a\35\uffff\1"+
            "\u075d\6\uffff\1\u075e\1\uffff\1\u075c\3\uffff\1\u075b\2\uffff"+
            "\1\u0754\2\uffff\1\u0754\7\uffff\1\u0753\1\uffff\1\u075b\1\u0754"+
            "\4\uffff\1\u0751",
            "\1\u0763\14\uffff\1\u0767\6\uffff\1\u0766\6\uffff\1\u0761\14"+
            "\uffff\1\u0761\3\uffff\1\u075f\16\uffff\1\u0768\22\uffff\1\u0760"+
            "\6\uffff\1\u0769\1\u076a\1\u076b\35\uffff\1\u076e\6\uffff\1"+
            "\u076f\1\uffff\1\u076d\3\uffff\1\u076c\2\uffff\1\u0765\2\uffff"+
            "\1\u0765\7\uffff\1\u0764\1\uffff\1\u076c\1\u0765\4\uffff\1\u0762",
            "\1\u0773\14\uffff\1\u0777\6\uffff\1\u0776\6\uffff\1\u0771\14"+
            "\uffff\1\u0771\22\uffff\1\u0778\22\uffff\1\u0770\6\uffff\1\u0779"+
            "\1\u077a\1\u077b\35\uffff\1\u077e\6\uffff\1\u077f\1\uffff\1"+
            "\u077d\3\uffff\1\u077c\2\uffff\1\u0775\2\uffff\1\u0775\7\uffff"+
            "\1\u0774\1\uffff\1\u077c\1\u0775\4\uffff\1\u0772",
            "\1\u0782\14\uffff\1\u0786\6\uffff\1\u0785\6\uffff\1\u0780\14"+
            "\uffff\1\u0780\22\uffff\1\u0787\31\uffff\1\u0788\1\u0789\1\u078a"+
            "\35\uffff\1\u078d\6\uffff\1\u078e\1\uffff\1\u078c\3\uffff\1"+
            "\u078b\2\uffff\1\u0784\2\uffff\1\u0784\7\uffff\1\u0783\1\uffff"+
            "\1\u078b\1\u0784\4\uffff\1\u0781",
            "\1\u0790\14\uffff\1\u0794\6\uffff\1\u0793\46\uffff\1\u0795"+
            "\31\uffff\1\u0796\1\u0797\1\u0798\35\uffff\1\u079b\6\uffff\1"+
            "\u079c\1\uffff\1\u079a\3\uffff\1\u0799\2\uffff\1\u0792\2\uffff"+
            "\1\u0792\7\uffff\1\u0791\1\uffff\1\u0799\1\u0792\4\uffff\1\u078f",
            "\1\u079d\u0084\uffff\1\u079f\2\uffff\1\u079f\7\uffff\1\u079e"+
            "\2\uffff\1\u079f",
            "\1\u07a6\22\uffff\1\u07a2\52\uffff\1\u07ab\1\u07ae\1\u07b1"+
            "\1\u07a0\1\uffff\1\u07a6\2\u07b1\1\u07aa\1\uffff\1\u07a1\1\u07a8"+
            "\1\u07b1\1\u07a4\1\u07a9\1\u07a7\1\u07b1\1\u07a5\2\u07a9\1\u07b1"+
            "\1\u07aa\1\uffff\1\u07ad\1\u07b1\1\u07af\1\u07a6\1\u07b1\1\u07a7"+
            "\1\u07b1\1\u07a5\1\u07b0\1\u07a8\1\u07b1\1\uffff\1\u07ac\1\u07b1"+
            "\30\uffff\1\u07b2\52\uffff\1\u07a3",
            "\1\u07b9\22\uffff\1\u07b5\52\uffff\1\u07be\1\u07c1\1\u07c4"+
            "\1\u07b3\1\uffff\1\u07b9\2\u07c4\1\u07bd\1\uffff\1\u07b4\1\u07bb"+
            "\1\u07c4\1\u07b7\1\u07bc\1\u07ba\1\u07c4\1\u07b8\2\u07bc\1\u07c4"+
            "\1\u07bd\1\uffff\1\u07c0\1\u07c4\1\u07c2\1\u07b9\1\u07c4\1\u07ba"+
            "\1\u07c4\1\u07b8\1\u07c3\1\u07bb\1\u07c4\1\uffff\1\u07bf\1\u07c4"+
            "\30\uffff\1\u07c5\52\uffff\1\u07b6",
            "\1\u07cc\22\uffff\1\u07c8\52\uffff\1\u07d1\1\u07d4\1\u07d7"+
            "\1\u07c6\1\uffff\1\u07cc\2\u07d7\1\u07d0\1\uffff\1\u07c7\1\u07ce"+
            "\1\u07d7\1\u07ca\1\u07cf\1\u07cd\1\u07d7\1\u07cb\2\u07cf\1\u07d7"+
            "\1\u07d0\1\uffff\1\u07d3\1\u07d7\1\u07d5\1\u07cc\1\u07d7\1\u07cd"+
            "\1\u07d7\1\u07cb\1\u07d6\1\u07ce\1\u07d7\1\uffff\1\u07d2\1\u07d7"+
            "\30\uffff\1\u07d8\52\uffff\1\u07c9",
            "\1\u07da\14\uffff\1\u07d9\6\uffff\1\u07dd\100\uffff\1\u07de"+
            "\57\uffff\1\u07dc\2\uffff\1\u07dc\7\uffff\1\u07db\2\uffff\1"+
            "\u07dc",
            "\1\u07e2\16\uffff\1\u07df\44\uffff\1\u07e1\11\uffff\1\u07e3"+
            "\2\uffff\1\u07ed\6\uffff\1\u07ec\4\uffff\1\u07e4\1\uffff\1\u07e8"+
            "\4\uffff\1\u07e5\5\uffff\1\u07e4\1\uffff\1\u07e8\3\uffff\1\u07e6"+
            "\16\uffff\1\u07ee\22\uffff\1\u07e7\6\uffff\1\u07ef\1\u07f0\1"+
            "\u07f1\25\uffff\1\u07e9\7\uffff\1\u07f4\6\uffff\1\u07f5\1\uffff"+
            "\1\u07f3\3\uffff\1\u07f2\2\uffff\1\u07eb\2\uffff\1\u07eb\7\uffff"+
            "\1\u07ea\1\uffff\1\u07f2\1\u07eb\4\uffff\1\u07e0",
            "\1\u07f7\75\uffff\1\u07fc\1\u07ff\1\u0802\2\uffff\1\u07f7\2"+
            "\u0802\1\u07fb\2\uffff\1\u07f9\1\u0802\2\u07fa\1\u07f8\1\u0802"+
            "\1\u07f6\2\u07fa\1\u0802\1\u07fb\1\uffff\1\u07fe\1\u0802\1\u0800"+
            "\1\u07f7\1\u0802\1\u07f8\1\u0802\1\u07f6\1\u0801\1\u07f9\1\u0802"+
            "\1\uffff\1\u07fd\1\u0802\30\uffff\1\u0803",
            "\1\u0805\75\uffff\1\u080a\1\u080d\1\u0810\2\uffff\1\u0805\2"+
            "\u0810\1\u0809\2\uffff\1\u0807\1\u0810\2\u0808\1\u0806\1\u0810"+
            "\1\u0804\2\u0808\1\u0810\1\u0809\1\uffff\1\u080c\1\u0810\1\u080e"+
            "\1\u0805\1\u0810\1\u0806\1\u0810\1\u0804\1\u080f\1\u0807\1\u0810"+
            "\1\uffff\1\u080b\1\u0810\30\uffff\1\u0811",
            "\1\u0813\75\uffff\1\u0818\1\u081b\1\u081e\2\uffff\1\u0813\2"+
            "\u081e\1\u0817\2\uffff\1\u0815\1\u081e\2\u0816\1\u0814\1\u081e"+
            "\1\u0812\2\u0816\1\u081e\1\u0817\1\uffff\1\u081a\1\u081e\1\u081c"+
            "\1\u0813\1\u081e\1\u0814\1\u081e\1\u0812\1\u081d\1\u0815\1\u081e"+
            "\1\uffff\1\u0819\1\u081e\30\uffff\1\u081f",
            "\1\u0821\75\uffff\1\u0826\1\u0829\1\u082c\2\uffff\1\u0821\2"+
            "\u082c\1\u0825\2\uffff\1\u0823\1\u082c\2\u0824\1\u0822\1\u082c"+
            "\1\u0820\2\u0824\1\u082c\1\u0825\1\uffff\1\u0828\1\u082c\1\u082a"+
            "\1\u0821\1\u082c\1\u0822\1\u082c\1\u0820\1\u082b\1\u0823\1\u082c"+
            "\1\uffff\1\u0827\1\u082c\30\uffff\1\u082d",
            "\1\u082f\75\uffff\1\u0834\1\u0837\1\u083a\2\uffff\1\u082f\2"+
            "\u083a\1\u0833\2\uffff\1\u0831\1\u083a\2\u0832\1\u0830\1\u083a"+
            "\1\u082e\2\u0832\1\u083a\1\u0833\1\uffff\1\u0836\1\u083a\1\u0838"+
            "\1\u082f\1\u083a\1\u0830\1\u083a\1\u082e\1\u0839\1\u0831\1\u083a"+
            "\1\uffff\1\u0835\1\u083a\30\uffff\1\u083b",
            "\1\u083c",
            "\1\u083d",
            "\1\u083e",
            "\1\12\13\uffff\1\4\6\uffff\1\u083f\40\uffff\1\12\13\uffff\1"+
            "\4\3\uffff\2\4\2\uffff\1\u0846\1\uffff\1\4\3\uffff\1\4\3\uffff"+
            "\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0840\22\uffff\1\12"+
            "\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0851\40\uffff\1\12\13\uffff\1"+
            "\4\1\u084a\2\uffff\2\4\2\uffff\1\u084b\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0852\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u085d\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0856\2\uffff\2\4\2\uffff\1\u0857\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u085e\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0869\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0862\2\uffff\2\4\2\uffff\1\u0863\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u086a\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0875\40\uffff\1\12\13\uffff\1"+
            "\4\1\u086e\2\uffff\2\4\2\uffff\1\u086f\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0876\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u0881\40\uffff\1\12\13\uffff\1"+
            "\4\1\u087a\2\uffff\2\4\2\uffff\1\u087b\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u0882\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "\1\12\13\uffff\1\4\6\uffff\1\u088d\40\uffff\1\12\13\uffff\1"+
            "\4\1\u0886\2\uffff\2\4\2\uffff\1\u0887\1\uffff\1\4\3\uffff\1"+
            "\4\3\uffff\1\4\3\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\1"+
            "\4\2\uffff\1\4\33\uffff\1\4\42\uffff\1\12\4\uffff\1\u088e\22"+
            "\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff\1\12\4\uffff\1"+
            "\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA63_eot = DFA.unpackEncodedString(DFA63_eotS);
    static final short[] DFA63_eof = DFA.unpackEncodedString(DFA63_eofS);
    static final char[] DFA63_min = DFA.unpackEncodedStringToUnsignedChars(DFA63_minS);
    static final char[] DFA63_max = DFA.unpackEncodedStringToUnsignedChars(DFA63_maxS);
    static final short[] DFA63_accept = DFA.unpackEncodedString(DFA63_acceptS);
    static final short[] DFA63_special = DFA.unpackEncodedString(DFA63_specialS);
    static final short[][] DFA63_transition;

    static {
        int numStates = DFA63_transitionS.length;
        DFA63_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA63_transition[i] = DFA.unpackEncodedString(DFA63_transitionS[i]);
        }
    }

    class DFA63 extends DFA {

        public DFA63(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 63;
            this.eot = DFA63_eot;
            this.eof = DFA63_eof;
            this.min = DFA63_min;
            this.max = DFA63_max;
            this.accept = DFA63_accept;
            this.special = DFA63_special;
            this.transition = DFA63_transition;
        }
        public String getDescription() {
            return "514:32: ( static_type_wrapper )?";
        }
    }
    static final String DFA81_eotS =
        "\153\uffff";
    static final String DFA81_eofS =
        "\61\uffff\1\1\71\uffff";
    static final String DFA81_minS =
        "\1\6\14\uffff\1\6\12\uffff\1\6\30\uffff\1\6\71\uffff";
    static final String DFA81_maxS =
        "\1\u00d2\14\uffff\1\u00d2\12\uffff\1\u00ac\30\uffff\1\u00d2\71\uffff";
    static final String DFA81_acceptS =
        "\1\uffff\1\1\53\uffff\1\2\75\uffff";
    static final String DFA81_specialS =
        "\153\uffff}>";
    static final String[] DFA81_transitionS = {
            "\1\1\63\uffff\1\1\11\uffff\1\1\2\uffff\1\15\6\uffff\1\1\4\uffff"+
            "\1\1\1\uffff\1\1\4\uffff\1\1\5\uffff\1\1\1\uffff\1\1\3\uffff"+
            "\1\1\16\uffff\1\1\22\uffff\1\1\6\uffff\3\1\35\uffff\1\1\6\uffff"+
            "\1\1\1\uffff\1\1\3\uffff\1\1\2\uffff\1\1\2\uffff\1\1\7\uffff"+
            "\1\1\1\uffff\2\1\4\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\1\16\uffff\1\1\44\uffff\1\30\11\uffff\1\1\2\uffff\1\1\6"+
            "\uffff\1\1\4\uffff\1\1\1\uffff\1\1\4\uffff\1\1\5\uffff\1\1\1"+
            "\uffff\1\1\3\uffff\1\1\16\uffff\1\1\22\uffff\1\1\6\uffff\3\1"+
            "\2\uffff\1\55\22\uffff\1\1\7\uffff\1\1\6\uffff\1\1\1\uffff\1"+
            "\1\3\uffff\1\1\2\uffff\1\1\2\uffff\1\1\7\uffff\1\1\1\uffff\2"+
            "\1\4\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\1\22\uffff\1\1\52\uffff\4\1\1\uffff\4\1\1\uffff\14\1\1\uffff"+
            "\13\1\1\uffff\2\1\26\uffff\1\61\54\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\1\12\uffff\2\1\6\uffff\1\1\40\uffff\1\1\11\uffff\4\1\1\uffff"+
            "\4\1\1\55\33\1\14\uffff\1\1\11\uffff\3\1\2\uffff\1\1\3\uffff"+
            "\1\1\6\uffff\3\1\32\uffff\1\1\2\uffff\1\1\6\uffff\1\1\1\uffff"+
            "\1\1\3\uffff\1\1\2\uffff\1\1\2\uffff\1\1\7\uffff\1\1\1\uffff"+
            "\2\1\4\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
    static final short[][] DFA81_transition;

    static {
        int numStates = DFA81_transitionS.length;
        DFA81_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
        }
    }

    class DFA81 extends DFA {

        public DFA81(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 81;
            this.eot = DFA81_eot;
            this.eof = DFA81_eof;
            this.min = DFA81_min;
            this.max = DFA81_max;
            this.accept = DFA81_accept;
            this.special = DFA81_special;
            this.transition = DFA81_transition;
        }
        public String getDescription() {
            return "607:1: expression : ( classical_expr_wrp | struct_init_wrapper );";
        }
    }
    static final String DFA82_eotS =
        "\u043d\uffff";
    static final String DFA82_eofS =
        "\u043d\uffff";
    static final String DFA82_minS =
        "\1\21\6\uffff\1\6\10\72\3\uffff\1\72\1\6\5\uffff\3\107\1\6\7\72"+
        "\3\uffff\1\72\5\uffff\3\107\6\72\3\uffff\1\72\1\6\5\uffff\3\107"+
        "\5\72\3\uffff\1\72\1\6\5\uffff\3\107\4\72\3\uffff\1\72\1\6\5\uffff"+
        "\3\107\3\72\3\uffff\1\72\1\6\5\uffff\3\107\2\72\3\uffff\1\72\1\6"+
        "\5\uffff\3\107\1\72\3\uffff\1\72\1\6\5\uffff\3\107\3\uffff\1\25"+
        "\3\31\3\72\2\6\7\72\3\6\1\72\6\6\3\107\3\72\u0386\uffff";
    static final String DFA82_maxS =
        "\1\u00d2\6\uffff\10\u00d2\1\u00cd\3\uffff\1\u00cd\1\u00d2\5\uffff"+
        "\3\107\7\u00d2\1\u00cd\3\uffff\1\u00cd\5\uffff\3\107\5\u00d2\1\u00cd"+
        "\3\uffff\1\u00cd\1\u00d2\5\uffff\3\107\4\u00d2\1\u00cd\3\uffff\1"+
        "\u00cd\1\u00d2\5\uffff\3\107\3\u00d2\1\u00cd\3\uffff\1\u00cd\1\u00d2"+
        "\5\uffff\3\107\2\u00d2\1\u00cd\3\uffff\1\u00cd\1\u00d2\5\uffff\3"+
        "\107\1\u00d2\1\u00cd\3\uffff\1\u00cd\1\u00d2\5\uffff\3\107\1\u00cd"+
        "\3\uffff\1\u00cd\1\u00d2\5\uffff\3\107\3\uffff\1\u00d2\5\u00cd\2"+
        "\u00d2\1\u00ac\7\u00d2\1\177\2\u00ac\1\u00cd\1\u00d2\5\177\3\107"+
        "\3\u00cd\u0386\uffff";
    static final String DFA82_acceptS =
        "\1\uffff\1\2\16\uffff\3\1\2\uffff\5\1\13\uffff\3\1\1\uffff\5\1\11"+
        "\uffff\3\1\2\uffff\5\1\10\uffff\3\1\2\uffff\5\1\7\uffff\3\1\2\uffff"+
        "\5\1\6\uffff\3\1\2\uffff\5\1\5\uffff\3\1\2\uffff\5\1\4\uffff\3\1"+
        "\2\uffff\5\1\3\uffff\3\1\40\uffff\u0386\1";
    static final String DFA82_specialS =
        "\u043d\uffff}>";
    static final String[] DFA82_transitionS = {
            "\1\1\1\7\47\uffff\1\1\111\uffff\1\1\42\uffff\1\1\27\uffff\1"+
            "\1\2\uffff\1\1\7\uffff\1\1\2\uffff\1\1\4\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\10\63\uffff\1\20\11\uffff\1\11\2\uffff\1\24\6\uffff\1\23"+
            "\4\uffff\1\12\1\uffff\1\16\4\uffff\1\13\5\uffff\1\12\1\uffff"+
            "\1\16\3\uffff\1\14\16\uffff\1\25\22\uffff\1\15\6\uffff\1\26"+
            "\1\27\1\30\35\uffff\1\33\6\uffff\1\34\1\uffff\1\32\3\uffff\1"+
            "\31\2\uffff\1\22\2\uffff\1\22\7\uffff\1\21\1\uffff\1\31\1\22"+
            "\4\uffff\1\17",
            "\1\45\11\uffff\1\36\2\uffff\1\35\6\uffff\1\50\4\uffff\1\37"+
            "\1\uffff\1\43\4\uffff\1\40\5\uffff\1\37\1\uffff\1\43\3\uffff"+
            "\1\41\16\uffff\1\51\22\uffff\1\42\6\uffff\1\52\1\53\1\54\35"+
            "\uffff\1\57\6\uffff\1\60\1\uffff\1\56\3\uffff\1\55\2\uffff\1"+
            "\47\2\uffff\1\47\7\uffff\1\46\1\uffff\1\55\1\47\4\uffff\1\44",
            "\1\67\14\uffff\1\73\6\uffff\1\72\4\uffff\1\61\1\uffff\1\65"+
            "\4\uffff\1\62\5\uffff\1\61\1\uffff\1\65\3\uffff\1\63\16\uffff"+
            "\1\74\22\uffff\1\64\6\uffff\1\75\1\76\1\77\35\uffff\1\102\6"+
            "\uffff\1\103\1\uffff\1\101\3\uffff\1\100\2\uffff\1\71\2\uffff"+
            "\1\71\7\uffff\1\70\1\uffff\1\100\1\71\4\uffff\1\66",
            "\1\111\14\uffff\1\115\6\uffff\1\114\6\uffff\1\107\4\uffff\1"+
            "\104\7\uffff\1\107\3\uffff\1\105\16\uffff\1\116\22\uffff\1\106"+
            "\6\uffff\1\117\1\120\1\121\35\uffff\1\124\6\uffff\1\125\1\uffff"+
            "\1\123\3\uffff\1\122\2\uffff\1\113\2\uffff\1\113\7\uffff\1\112"+
            "\1\uffff\1\122\1\113\4\uffff\1\110",
            "\1\132\14\uffff\1\136\6\uffff\1\135\6\uffff\1\130\14\uffff"+
            "\1\130\3\uffff\1\126\16\uffff\1\137\22\uffff\1\127\6\uffff\1"+
            "\140\1\141\1\142\35\uffff\1\145\6\uffff\1\146\1\uffff\1\144"+
            "\3\uffff\1\143\2\uffff\1\134\2\uffff\1\134\7\uffff\1\133\1\uffff"+
            "\1\143\1\134\4\uffff\1\131",
            "\1\152\14\uffff\1\156\6\uffff\1\155\6\uffff\1\150\14\uffff"+
            "\1\150\22\uffff\1\157\22\uffff\1\147\6\uffff\1\160\1\161\1\162"+
            "\35\uffff\1\165\6\uffff\1\166\1\uffff\1\164\3\uffff\1\163\2"+
            "\uffff\1\154\2\uffff\1\154\7\uffff\1\153\1\uffff\1\163\1\154"+
            "\4\uffff\1\151",
            "\1\171\14\uffff\1\175\6\uffff\1\174\6\uffff\1\167\14\uffff"+
            "\1\167\22\uffff\1\176\31\uffff\1\177\1\u0080\1\u0081\35\uffff"+
            "\1\u0084\6\uffff\1\u0085\1\uffff\1\u0083\3\uffff\1\u0082\2\uffff"+
            "\1\173\2\uffff\1\173\7\uffff\1\172\1\uffff\1\u0082\1\173\4\uffff"+
            "\1\170",
            "\1\u0087\14\uffff\1\u008b\6\uffff\1\u008a\46\uffff\1\u008c"+
            "\31\uffff\1\u008d\1\u008e\1\u008f\35\uffff\1\u0092\6\uffff\1"+
            "\u0093\1\uffff\1\u0091\3\uffff\1\u0090\2\uffff\1\u0089\2\uffff"+
            "\1\u0089\7\uffff\1\u0088\1\uffff\1\u0090\1\u0089\4\uffff\1\u0086",
            "\1\u0094\u0084\uffff\1\u0096\2\uffff\1\u0096\7\uffff\1\u0095"+
            "\2\uffff\1\u0096",
            "",
            "",
            "",
            "\1\u0098\14\uffff\1\u0097\6\uffff\1\u009b\100\uffff\1\u009c"+
            "\57\uffff\1\u009a\2\uffff\1\u009a\7\uffff\1\u0099\2\uffff\1"+
            "\u009a",
            "\1\u00a0\16\uffff\1\u009d\44\uffff\1\u009f\11\uffff\1\u00a1"+
            "\2\uffff\1\u00ab\6\uffff\1\u00aa\4\uffff\1\u00a2\1\uffff\1\u00a6"+
            "\4\uffff\1\u00a3\5\uffff\1\u00a2\1\uffff\1\u00a6\3\uffff\1\u00a4"+
            "\16\uffff\1\u00ac\22\uffff\1\u00a5\6\uffff\1\u00ad\1\u00ae\1"+
            "\u00af\25\uffff\1\u00a7\7\uffff\1\u00b2\6\uffff\1\u00b3\1\uffff"+
            "\1\u00b1\3\uffff\1\u00b0\2\uffff\1\u00a9\2\uffff\1\u00a9\7\uffff"+
            "\1\u00a8\1\uffff\1\u00b0\1\u00a9\4\uffff\1\u009e",
            "",
            "",
            "",
            "",
            "",
            "\1\u00b4",
            "\1\u00b5",
            "\1\u00b6",
            "\1\u00ba\16\uffff\1\u00b7\44\uffff\1\u00b9\11\uffff\1\u00bb"+
            "\2\uffff\1\u00c5\6\uffff\1\u00c4\4\uffff\1\u00bc\1\uffff\1\u00c0"+
            "\4\uffff\1\u00bd\5\uffff\1\u00bc\1\uffff\1\u00c0\3\uffff\1\u00be"+
            "\16\uffff\1\u00c6\22\uffff\1\u00bf\6\uffff\1\u00c7\1\u00c8\1"+
            "\u00c9\25\uffff\1\u00c1\7\uffff\1\u00cc\6\uffff\1\u00cd\1\uffff"+
            "\1\u00cb\3\uffff\1\u00ca\2\uffff\1\u00c3\2\uffff\1\u00c3\7\uffff"+
            "\1\u00c2\1\uffff\1\u00ca\1\u00c3\4\uffff\1\u00b8",
            "\1\u00d4\14\uffff\1\u00d8\6\uffff\1\u00d7\4\uffff\1\u00ce\1"+
            "\uffff\1\u00d2\4\uffff\1\u00cf\5\uffff\1\u00ce\1\uffff\1\u00d2"+
            "\3\uffff\1\u00d0\16\uffff\1\u00d9\22\uffff\1\u00d1\6\uffff\1"+
            "\u00da\1\u00db\1\u00dc\35\uffff\1\u00df\6\uffff\1\u00e0\1\uffff"+
            "\1\u00de\3\uffff\1\u00dd\2\uffff\1\u00d6\2\uffff\1\u00d6\7\uffff"+
            "\1\u00d5\1\uffff\1\u00dd\1\u00d6\4\uffff\1\u00d3",
            "\1\u00e6\14\uffff\1\u00ea\6\uffff\1\u00e9\6\uffff\1\u00e4\4"+
            "\uffff\1\u00e1\7\uffff\1\u00e4\3\uffff\1\u00e2\16\uffff\1\u00eb"+
            "\22\uffff\1\u00e3\6\uffff\1\u00ec\1\u00ed\1\u00ee\35\uffff\1"+
            "\u00f1\6\uffff\1\u00f2\1\uffff\1\u00f0\3\uffff\1\u00ef\2\uffff"+
            "\1\u00e8\2\uffff\1\u00e8\7\uffff\1\u00e7\1\uffff\1\u00ef\1\u00e8"+
            "\4\uffff\1\u00e5",
            "\1\u00f7\14\uffff\1\u00fb\6\uffff\1\u00fa\6\uffff\1\u00f5\14"+
            "\uffff\1\u00f5\3\uffff\1\u00f3\16\uffff\1\u00fc\22\uffff\1\u00f4"+
            "\6\uffff\1\u00fd\1\u00fe\1\u00ff\35\uffff\1\u0102\6\uffff\1"+
            "\u0103\1\uffff\1\u0101\3\uffff\1\u0100\2\uffff\1\u00f9\2\uffff"+
            "\1\u00f9\7\uffff\1\u00f8\1\uffff\1\u0100\1\u00f9\4\uffff\1\u00f6",
            "\1\u0107\14\uffff\1\u010b\6\uffff\1\u010a\6\uffff\1\u0105\14"+
            "\uffff\1\u0105\22\uffff\1\u010c\22\uffff\1\u0104\6\uffff\1\u010d"+
            "\1\u010e\1\u010f\35\uffff\1\u0112\6\uffff\1\u0113\1\uffff\1"+
            "\u0111\3\uffff\1\u0110\2\uffff\1\u0109\2\uffff\1\u0109\7\uffff"+
            "\1\u0108\1\uffff\1\u0110\1\u0109\4\uffff\1\u0106",
            "\1\u0116\14\uffff\1\u011a\6\uffff\1\u0119\6\uffff\1\u0114\14"+
            "\uffff\1\u0114\22\uffff\1\u011b\31\uffff\1\u011c\1\u011d\1\u011e"+
            "\35\uffff\1\u0121\6\uffff\1\u0122\1\uffff\1\u0120\3\uffff\1"+
            "\u011f\2\uffff\1\u0118\2\uffff\1\u0118\7\uffff\1\u0117\1\uffff"+
            "\1\u011f\1\u0118\4\uffff\1\u0115",
            "\1\u0124\14\uffff\1\u0128\6\uffff\1\u0127\46\uffff\1\u0129"+
            "\31\uffff\1\u012a\1\u012b\1\u012c\35\uffff\1\u012f\6\uffff\1"+
            "\u0130\1\uffff\1\u012e\3\uffff\1\u012d\2\uffff\1\u0126\2\uffff"+
            "\1\u0126\7\uffff\1\u0125\1\uffff\1\u012d\1\u0126\4\uffff\1\u0123",
            "\1\u0131\u0084\uffff\1\u0133\2\uffff\1\u0133\7\uffff\1\u0132"+
            "\2\uffff\1\u0133",
            "",
            "",
            "",
            "\1\u0135\14\uffff\1\u0134\6\uffff\1\u0138\100\uffff\1\u0139"+
            "\57\uffff\1\u0137\2\uffff\1\u0137\7\uffff\1\u0136\2\uffff\1"+
            "\u0137",
            "",
            "",
            "",
            "",
            "",
            "\1\u013a",
            "\1\u013b",
            "\1\u013c",
            "\1\u0142\14\uffff\1\u0146\6\uffff\1\u0145\6\uffff\1\u0140\4"+
            "\uffff\1\u013d\7\uffff\1\u0140\3\uffff\1\u013e\16\uffff\1\u0147"+
            "\22\uffff\1\u013f\6\uffff\1\u0148\1\u0149\1\u014a\35\uffff\1"+
            "\u014d\6\uffff\1\u014e\1\uffff\1\u014c\3\uffff\1\u014b\2\uffff"+
            "\1\u0144\2\uffff\1\u0144\7\uffff\1\u0143\1\uffff\1\u014b\1\u0144"+
            "\4\uffff\1\u0141",
            "\1\u0153\14\uffff\1\u0157\6\uffff\1\u0156\6\uffff\1\u0151\14"+
            "\uffff\1\u0151\3\uffff\1\u014f\16\uffff\1\u0158\22\uffff\1\u0150"+
            "\6\uffff\1\u0159\1\u015a\1\u015b\35\uffff\1\u015e\6\uffff\1"+
            "\u015f\1\uffff\1\u015d\3\uffff\1\u015c\2\uffff\1\u0155\2\uffff"+
            "\1\u0155\7\uffff\1\u0154\1\uffff\1\u015c\1\u0155\4\uffff\1\u0152",
            "\1\u0163\14\uffff\1\u0167\6\uffff\1\u0166\6\uffff\1\u0161\14"+
            "\uffff\1\u0161\22\uffff\1\u0168\22\uffff\1\u0160\6\uffff\1\u0169"+
            "\1\u016a\1\u016b\35\uffff\1\u016e\6\uffff\1\u016f\1\uffff\1"+
            "\u016d\3\uffff\1\u016c\2\uffff\1\u0165\2\uffff\1\u0165\7\uffff"+
            "\1\u0164\1\uffff\1\u016c\1\u0165\4\uffff\1\u0162",
            "\1\u0172\14\uffff\1\u0176\6\uffff\1\u0175\6\uffff\1\u0170\14"+
            "\uffff\1\u0170\22\uffff\1\u0177\31\uffff\1\u0178\1\u0179\1\u017a"+
            "\35\uffff\1\u017d\6\uffff\1\u017e\1\uffff\1\u017c\3\uffff\1"+
            "\u017b\2\uffff\1\u0174\2\uffff\1\u0174\7\uffff\1\u0173\1\uffff"+
            "\1\u017b\1\u0174\4\uffff\1\u0171",
            "\1\u0180\14\uffff\1\u0184\6\uffff\1\u0183\46\uffff\1\u0185"+
            "\31\uffff\1\u0186\1\u0187\1\u0188\35\uffff\1\u018b\6\uffff\1"+
            "\u018c\1\uffff\1\u018a\3\uffff\1\u0189\2\uffff\1\u0182\2\uffff"+
            "\1\u0182\7\uffff\1\u0181\1\uffff\1\u0189\1\u0182\4\uffff\1\u017f",
            "\1\u018d\u0084\uffff\1\u018f\2\uffff\1\u018f\7\uffff\1\u018e"+
            "\2\uffff\1\u018f",
            "",
            "",
            "",
            "\1\u0191\14\uffff\1\u0190\6\uffff\1\u0194\100\uffff\1\u0195"+
            "\57\uffff\1\u0193\2\uffff\1\u0193\7\uffff\1\u0192\2\uffff\1"+
            "\u0193",
            "\1\u0199\16\uffff\1\u0196\44\uffff\1\u0198\11\uffff\1\u019a"+
            "\2\uffff\1\u01a4\6\uffff\1\u01a3\4\uffff\1\u019b\1\uffff\1\u019f"+
            "\4\uffff\1\u019c\5\uffff\1\u019b\1\uffff\1\u019f\3\uffff\1\u019d"+
            "\16\uffff\1\u01a5\22\uffff\1\u019e\6\uffff\1\u01a6\1\u01a7\1"+
            "\u01a8\25\uffff\1\u01a0\7\uffff\1\u01ab\6\uffff\1\u01ac\1\uffff"+
            "\1\u01aa\3\uffff\1\u01a9\2\uffff\1\u01a2\2\uffff\1\u01a2\7\uffff"+
            "\1\u01a1\1\uffff\1\u01a9\1\u01a2\4\uffff\1\u0197",
            "",
            "",
            "",
            "",
            "",
            "\1\u01ad",
            "\1\u01ae",
            "\1\u01af",
            "\1\u01b4\14\uffff\1\u01b8\6\uffff\1\u01b7\6\uffff\1\u01b2\14"+
            "\uffff\1\u01b2\3\uffff\1\u01b0\16\uffff\1\u01b9\22\uffff\1\u01b1"+
            "\6\uffff\1\u01ba\1\u01bb\1\u01bc\35\uffff\1\u01bf\6\uffff\1"+
            "\u01c0\1\uffff\1\u01be\3\uffff\1\u01bd\2\uffff\1\u01b6\2\uffff"+
            "\1\u01b6\7\uffff\1\u01b5\1\uffff\1\u01bd\1\u01b6\4\uffff\1\u01b3",
            "\1\u01c4\14\uffff\1\u01c8\6\uffff\1\u01c7\6\uffff\1\u01c2\14"+
            "\uffff\1\u01c2\22\uffff\1\u01c9\22\uffff\1\u01c1\6\uffff\1\u01ca"+
            "\1\u01cb\1\u01cc\35\uffff\1\u01cf\6\uffff\1\u01d0\1\uffff\1"+
            "\u01ce\3\uffff\1\u01cd\2\uffff\1\u01c6\2\uffff\1\u01c6\7\uffff"+
            "\1\u01c5\1\uffff\1\u01cd\1\u01c6\4\uffff\1\u01c3",
            "\1\u01d3\14\uffff\1\u01d7\6\uffff\1\u01d6\6\uffff\1\u01d1\14"+
            "\uffff\1\u01d1\22\uffff\1\u01d8\31\uffff\1\u01d9\1\u01da\1\u01db"+
            "\35\uffff\1\u01de\6\uffff\1\u01df\1\uffff\1\u01dd\3\uffff\1"+
            "\u01dc\2\uffff\1\u01d5\2\uffff\1\u01d5\7\uffff\1\u01d4\1\uffff"+
            "\1\u01dc\1\u01d5\4\uffff\1\u01d2",
            "\1\u01e1\14\uffff\1\u01e5\6\uffff\1\u01e4\46\uffff\1\u01e6"+
            "\31\uffff\1\u01e7\1\u01e8\1\u01e9\35\uffff\1\u01ec\6\uffff\1"+
            "\u01ed\1\uffff\1\u01eb\3\uffff\1\u01ea\2\uffff\1\u01e3\2\uffff"+
            "\1\u01e3\7\uffff\1\u01e2\1\uffff\1\u01ea\1\u01e3\4\uffff\1\u01e0",
            "\1\u01ee\u0084\uffff\1\u01f0\2\uffff\1\u01f0\7\uffff\1\u01ef"+
            "\2\uffff\1\u01f0",
            "",
            "",
            "",
            "\1\u01f2\14\uffff\1\u01f1\6\uffff\1\u01f5\100\uffff\1\u01f6"+
            "\57\uffff\1\u01f4\2\uffff\1\u01f4\7\uffff\1\u01f3\2\uffff\1"+
            "\u01f4",
            "\1\u01fa\16\uffff\1\u01f7\44\uffff\1\u01f9\11\uffff\1\u01fb"+
            "\2\uffff\1\u0205\6\uffff\1\u0204\4\uffff\1\u01fc\1\uffff\1\u0200"+
            "\4\uffff\1\u01fd\5\uffff\1\u01fc\1\uffff\1\u0200\3\uffff\1\u01fe"+
            "\16\uffff\1\u0206\22\uffff\1\u01ff\6\uffff\1\u0207\1\u0208\1"+
            "\u0209\25\uffff\1\u0201\7\uffff\1\u020c\6\uffff\1\u020d\1\uffff"+
            "\1\u020b\3\uffff\1\u020a\2\uffff\1\u0203\2\uffff\1\u0203\7\uffff"+
            "\1\u0202\1\uffff\1\u020a\1\u0203\4\uffff\1\u01f8",
            "",
            "",
            "",
            "",
            "",
            "\1\u020e",
            "\1\u020f",
            "\1\u0210",
            "\1\u0214\14\uffff\1\u0218\6\uffff\1\u0217\6\uffff\1\u0212\14"+
            "\uffff\1\u0212\22\uffff\1\u0219\22\uffff\1\u0211\6\uffff\1\u021a"+
            "\1\u021b\1\u021c\35\uffff\1\u021f\6\uffff\1\u0220\1\uffff\1"+
            "\u021e\3\uffff\1\u021d\2\uffff\1\u0216\2\uffff\1\u0216\7\uffff"+
            "\1\u0215\1\uffff\1\u021d\1\u0216\4\uffff\1\u0213",
            "\1\u0223\14\uffff\1\u0227\6\uffff\1\u0226\6\uffff\1\u0221\14"+
            "\uffff\1\u0221\22\uffff\1\u0228\31\uffff\1\u0229\1\u022a\1\u022b"+
            "\35\uffff\1\u022e\6\uffff\1\u022f\1\uffff\1\u022d\3\uffff\1"+
            "\u022c\2\uffff\1\u0225\2\uffff\1\u0225\7\uffff\1\u0224\1\uffff"+
            "\1\u022c\1\u0225\4\uffff\1\u0222",
            "\1\u0231\14\uffff\1\u0235\6\uffff\1\u0234\46\uffff\1\u0236"+
            "\31\uffff\1\u0237\1\u0238\1\u0239\35\uffff\1\u023c\6\uffff\1"+
            "\u023d\1\uffff\1\u023b\3\uffff\1\u023a\2\uffff\1\u0233\2\uffff"+
            "\1\u0233\7\uffff\1\u0232\1\uffff\1\u023a\1\u0233\4\uffff\1\u0230",
            "\1\u023e\u0084\uffff\1\u0240\2\uffff\1\u0240\7\uffff\1\u023f"+
            "\2\uffff\1\u0240",
            "",
            "",
            "",
            "\1\u0242\14\uffff\1\u0241\6\uffff\1\u0245\100\uffff\1\u0246"+
            "\57\uffff\1\u0244\2\uffff\1\u0244\7\uffff\1\u0243\2\uffff\1"+
            "\u0244",
            "\1\u024a\16\uffff\1\u0247\44\uffff\1\u0249\11\uffff\1\u024b"+
            "\2\uffff\1\u0255\6\uffff\1\u0254\4\uffff\1\u024c\1\uffff\1\u0250"+
            "\4\uffff\1\u024d\5\uffff\1\u024c\1\uffff\1\u0250\3\uffff\1\u024e"+
            "\16\uffff\1\u0256\22\uffff\1\u024f\6\uffff\1\u0257\1\u0258\1"+
            "\u0259\25\uffff\1\u0251\7\uffff\1\u025c\6\uffff\1\u025d\1\uffff"+
            "\1\u025b\3\uffff\1\u025a\2\uffff\1\u0253\2\uffff\1\u0253\7\uffff"+
            "\1\u0252\1\uffff\1\u025a\1\u0253\4\uffff\1\u0248",
            "",
            "",
            "",
            "",
            "",
            "\1\u025e",
            "\1\u025f",
            "\1\u0260",
            "\1\u0263\14\uffff\1\u0267\6\uffff\1\u0266\6\uffff\1\u0261\14"+
            "\uffff\1\u0261\22\uffff\1\u0268\31\uffff\1\u0269\1\u026a\1\u026b"+
            "\35\uffff\1\u026e\6\uffff\1\u026f\1\uffff\1\u026d\3\uffff\1"+
            "\u026c\2\uffff\1\u0265\2\uffff\1\u0265\7\uffff\1\u0264\1\uffff"+
            "\1\u026c\1\u0265\4\uffff\1\u0262",
            "\1\u0271\14\uffff\1\u0275\6\uffff\1\u0274\46\uffff\1\u0276"+
            "\31\uffff\1\u0277\1\u0278\1\u0279\35\uffff\1\u027c\6\uffff\1"+
            "\u027d\1\uffff\1\u027b\3\uffff\1\u027a\2\uffff\1\u0273\2\uffff"+
            "\1\u0273\7\uffff\1\u0272\1\uffff\1\u027a\1\u0273\4\uffff\1\u0270",
            "\1\u027e\u0084\uffff\1\u0280\2\uffff\1\u0280\7\uffff\1\u027f"+
            "\2\uffff\1\u0280",
            "",
            "",
            "",
            "\1\u0282\14\uffff\1\u0281\6\uffff\1\u0285\100\uffff\1\u0286"+
            "\57\uffff\1\u0284\2\uffff\1\u0284\7\uffff\1\u0283\2\uffff\1"+
            "\u0284",
            "\1\u028a\16\uffff\1\u0287\44\uffff\1\u0289\11\uffff\1\u028b"+
            "\2\uffff\1\u0295\6\uffff\1\u0294\4\uffff\1\u028c\1\uffff\1\u0290"+
            "\4\uffff\1\u028d\5\uffff\1\u028c\1\uffff\1\u0290\3\uffff\1\u028e"+
            "\16\uffff\1\u0296\22\uffff\1\u028f\6\uffff\1\u0297\1\u0298\1"+
            "\u0299\25\uffff\1\u0291\7\uffff\1\u029c\6\uffff\1\u029d\1\uffff"+
            "\1\u029b\3\uffff\1\u029a\2\uffff\1\u0293\2\uffff\1\u0293\7\uffff"+
            "\1\u0292\1\uffff\1\u029a\1\u0293\4\uffff\1\u0288",
            "",
            "",
            "",
            "",
            "",
            "\1\u029e",
            "\1\u029f",
            "\1\u02a0",
            "\1\u02a2\14\uffff\1\u02a6\6\uffff\1\u02a5\46\uffff\1\u02a7"+
            "\31\uffff\1\u02a8\1\u02a9\1\u02aa\35\uffff\1\u02ad\6\uffff\1"+
            "\u02ae\1\uffff\1\u02ac\3\uffff\1\u02ab\2\uffff\1\u02a4\2\uffff"+
            "\1\u02a4\7\uffff\1\u02a3\1\uffff\1\u02ab\1\u02a4\4\uffff\1\u02a1",
            "\1\u02af\u0084\uffff\1\u02b1\2\uffff\1\u02b1\7\uffff\1\u02b0"+
            "\2\uffff\1\u02b1",
            "",
            "",
            "",
            "\1\u02b3\14\uffff\1\u02b2\6\uffff\1\u02b6\100\uffff\1\u02b7"+
            "\57\uffff\1\u02b5\2\uffff\1\u02b5\7\uffff\1\u02b4\2\uffff\1"+
            "\u02b5",
            "\1\u02bb\16\uffff\1\u02b8\44\uffff\1\u02ba\11\uffff\1\u02bc"+
            "\2\uffff\1\u02c6\6\uffff\1\u02c5\4\uffff\1\u02bd\1\uffff\1\u02c1"+
            "\4\uffff\1\u02be\5\uffff\1\u02bd\1\uffff\1\u02c1\3\uffff\1\u02bf"+
            "\16\uffff\1\u02c7\22\uffff\1\u02c0\6\uffff\1\u02c8\1\u02c9\1"+
            "\u02ca\25\uffff\1\u02c2\7\uffff\1\u02cd\6\uffff\1\u02ce\1\uffff"+
            "\1\u02cc\3\uffff\1\u02cb\2\uffff\1\u02c4\2\uffff\1\u02c4\7\uffff"+
            "\1\u02c3\1\uffff\1\u02cb\1\u02c4\4\uffff\1\u02b9",
            "",
            "",
            "",
            "",
            "",
            "\1\u02cf",
            "\1\u02d0",
            "\1\u02d1",
            "\1\u02d2\u0084\uffff\1\u02d4\2\uffff\1\u02d4\7\uffff\1\u02d3"+
            "\2\uffff\1\u02d4",
            "",
            "",
            "",
            "\1\u02d6\14\uffff\1\u02d5\6\uffff\1\u02d9\100\uffff\1\u02da"+
            "\57\uffff\1\u02d8\2\uffff\1\u02d8\7\uffff\1\u02d7\2\uffff\1"+
            "\u02d8",
            "\1\u02de\16\uffff\1\u02db\44\uffff\1\u02dd\11\uffff\1\u02df"+
            "\2\uffff\1\u02e9\6\uffff\1\u02e8\4\uffff\1\u02e0\1\uffff\1\u02e4"+
            "\4\uffff\1\u02e1\5\uffff\1\u02e0\1\uffff\1\u02e4\3\uffff\1\u02e2"+
            "\16\uffff\1\u02ea\22\uffff\1\u02e3\6\uffff\1\u02eb\1\u02ec\1"+
            "\u02ed\25\uffff\1\u02e5\7\uffff\1\u02f0\6\uffff\1\u02f1\1\uffff"+
            "\1\u02ef\3\uffff\1\u02ee\2\uffff\1\u02e7\2\uffff\1\u02e7\7\uffff"+
            "\1\u02e6\1\uffff\1\u02ee\1\u02e7\4\uffff\1\u02dc",
            "",
            "",
            "",
            "",
            "",
            "\1\u02f2",
            "\1\u02f3",
            "\1\u02f4",
            "",
            "",
            "",
            "\1\u02f5\44\uffff\1\u02f7\154\uffff\1\u02f7\52\uffff\1\u02f6",
            "\1\u02fa\40\uffff\1\u02fc\14\uffff\1\u02f8\6\uffff\1\u02f9"+
            "\135\uffff\1\u02fb\22\uffff\1\u02fd\2\uffff\1\u02fd\12\uffff"+
            "\1\u02fd",
            "\1\u0300\40\uffff\1\u0302\14\uffff\1\u02fe\6\uffff\1\u02ff"+
            "\135\uffff\1\u0301\22\uffff\1\u0303\2\uffff\1\u0303\12\uffff"+
            "\1\u0303",
            "\1\u0306\40\uffff\1\u0308\14\uffff\1\u0304\6\uffff\1\u0305"+
            "\135\uffff\1\u0307\22\uffff\1\u0309\2\uffff\1\u0309\12\uffff"+
            "\1\u0309",
            "\1\u030b\14\uffff\1\u030a\6\uffff\1\u030e\100\uffff\1\u030f"+
            "\57\uffff\1\u030d\2\uffff\1\u030d\7\uffff\1\u030c\2\uffff\1"+
            "\u030d",
            "\1\u0310\u0084\uffff\1\u0311\2\uffff\1\u0311\12\uffff\1\u0311",
            "\1\u0313\154\uffff\1\u0313\52\uffff\1\u0312",
            "\1\u0317\63\uffff\1\u0314\23\uffff\1\u0315\2\uffff\1\u0316"+
            "\55\uffff\1\u0318\47\uffff\1\u0319\27\uffff\1\u031b\2\uffff"+
            "\1\u031b\7\uffff\1\u031a\2\uffff\1\u031b\4\uffff\1\u0319",
            "\1\u031e\22\uffff\1\u0321\52\uffff\1\u0329\1\u032c\1\u032f"+
            "\1\u0320\1\uffff\1\u0324\2\u032f\1\u0328\1\uffff\1\u031c\1\u0326"+
            "\1\u032f\1\u031d\1\u0327\1\u0325\1\u032f\1\u0323\2\u0327\1\u032f"+
            "\1\u0328\1\uffff\1\u032b\1\u032f\1\u032d\1\u0324\1\u032f\1\u0325"+
            "\1\u032f\1\u0323\1\u032e\1\u0326\1\u032f\1\uffff\1\u032a\1\u032f"+
            "\26\uffff\1\u031f\54\uffff\1\u0322",
            "\1\u0338\11\uffff\1\u0331\2\uffff\1\u0330\6\uffff\1\u033b\4"+
            "\uffff\1\u0332\1\uffff\1\u0336\4\uffff\1\u0333\5\uffff\1\u0332"+
            "\1\uffff\1\u0336\3\uffff\1\u0334\16\uffff\1\u033c\22\uffff\1"+
            "\u0335\6\uffff\1\u033d\1\u033e\1\u033f\35\uffff\1\u0342\6\uffff"+
            "\1\u0343\1\uffff\1\u0341\3\uffff\1\u0340\2\uffff\1\u033a\2\uffff"+
            "\1\u033a\7\uffff\1\u0339\1\uffff\1\u0340\1\u033a\4\uffff\1\u0337",
            "\1\u034a\14\uffff\1\u034e\6\uffff\1\u034d\4\uffff\1\u0344\1"+
            "\uffff\1\u0348\4\uffff\1\u0345\5\uffff\1\u0344\1\uffff\1\u0348"+
            "\3\uffff\1\u0346\16\uffff\1\u034f\22\uffff\1\u0347\6\uffff\1"+
            "\u0350\1\u0351\1\u0352\35\uffff\1\u0355\6\uffff\1\u0356\1\uffff"+
            "\1\u0354\3\uffff\1\u0353\2\uffff\1\u034c\2\uffff\1\u034c\7\uffff"+
            "\1\u034b\1\uffff\1\u0353\1\u034c\4\uffff\1\u0349",
            "\1\u035c\14\uffff\1\u0360\6\uffff\1\u035f\6\uffff\1\u035a\4"+
            "\uffff\1\u0357\7\uffff\1\u035a\3\uffff\1\u0358\16\uffff\1\u0361"+
            "\22\uffff\1\u0359\6\uffff\1\u0362\1\u0363\1\u0364\35\uffff\1"+
            "\u0367\6\uffff\1\u0368\1\uffff\1\u0366\3\uffff\1\u0365\2\uffff"+
            "\1\u035e\2\uffff\1\u035e\7\uffff\1\u035d\1\uffff\1\u0365\1\u035e"+
            "\4\uffff\1\u035b",
            "\1\u036d\14\uffff\1\u0371\6\uffff\1\u0370\6\uffff\1\u036b\14"+
            "\uffff\1\u036b\3\uffff\1\u0369\16\uffff\1\u0372\22\uffff\1\u036a"+
            "\6\uffff\1\u0373\1\u0374\1\u0375\35\uffff\1\u0378\6\uffff\1"+
            "\u0379\1\uffff\1\u0377\3\uffff\1\u0376\2\uffff\1\u036f\2\uffff"+
            "\1\u036f\7\uffff\1\u036e\1\uffff\1\u0376\1\u036f\4\uffff\1\u036c",
            "\1\u037d\14\uffff\1\u0381\6\uffff\1\u0380\6\uffff\1\u037b\14"+
            "\uffff\1\u037b\22\uffff\1\u0382\22\uffff\1\u037a\6\uffff\1\u0383"+
            "\1\u0384\1\u0385\35\uffff\1\u0388\6\uffff\1\u0389\1\uffff\1"+
            "\u0387\3\uffff\1\u0386\2\uffff\1\u037f\2\uffff\1\u037f\7\uffff"+
            "\1\u037e\1\uffff\1\u0386\1\u037f\4\uffff\1\u037c",
            "\1\u038c\14\uffff\1\u0390\6\uffff\1\u038f\6\uffff\1\u038a\14"+
            "\uffff\1\u038a\22\uffff\1\u0391\31\uffff\1\u0392\1\u0393\1\u0394"+
            "\35\uffff\1\u0397\6\uffff\1\u0398\1\uffff\1\u0396\3\uffff\1"+
            "\u0395\2\uffff\1\u038e\2\uffff\1\u038e\7\uffff\1\u038d\1\uffff"+
            "\1\u0395\1\u038e\4\uffff\1\u038b",
            "\1\u039a\14\uffff\1\u039e\6\uffff\1\u039d\46\uffff\1\u039f"+
            "\31\uffff\1\u03a0\1\u03a1\1\u03a2\35\uffff\1\u03a5\6\uffff\1"+
            "\u03a6\1\uffff\1\u03a4\3\uffff\1\u03a3\2\uffff\1\u039c\2\uffff"+
            "\1\u039c\7\uffff\1\u039b\1\uffff\1\u03a3\1\u039c\4\uffff\1\u0399",
            "\1\u03a9\107\uffff\1\u03a7\2\uffff\1\u03a8\55\uffff\1\u03aa",
            "\1\u03b1\22\uffff\1\u03ad\52\uffff\1\u03b6\1\u03b9\1\u03bc"+
            "\1\u03ab\1\uffff\1\u03b1\2\u03bc\1\u03b5\1\uffff\1\u03ac\1\u03b3"+
            "\1\u03bc\1\u03af\1\u03b4\1\u03b2\1\u03bc\1\u03b0\2\u03b4\1\u03bc"+
            "\1\u03b5\1\uffff\1\u03b8\1\u03bc\1\u03ba\1\u03b1\1\u03bc\1\u03b2"+
            "\1\u03bc\1\u03b0\1\u03bb\1\u03b3\1\u03bc\1\uffff\1\u03b7\1\u03bc"+
            "\26\uffff\1\u03bd\54\uffff\1\u03ae",
            "\1\u03c4\22\uffff\1\u03c0\52\uffff\1\u03c9\1\u03cc\1\u03cf"+
            "\1\u03be\1\uffff\1\u03c4\2\u03cf\1\u03c8\1\uffff\1\u03bf\1\u03c6"+
            "\1\u03cf\1\u03c2\1\u03c7\1\u03c5\1\u03cf\1\u03c3\2\u03c7\1\u03cf"+
            "\1\u03c8\1\uffff\1\u03cb\1\u03cf\1\u03cd\1\u03c4\1\u03cf\1\u03c5"+
            "\1\u03cf\1\u03c3\1\u03ce\1\u03c6\1\u03cf\1\uffff\1\u03ca\1\u03cf"+
            "\26\uffff\1\u03d0\54\uffff\1\u03c1",
            "\1\u03d2\14\uffff\1\u03d1\6\uffff\1\u03d5\100\uffff\1\u03d6"+
            "\57\uffff\1\u03d4\2\uffff\1\u03d4\7\uffff\1\u03d3\2\uffff\1"+
            "\u03d4",
            "\1\u03da\16\uffff\1\u03d7\44\uffff\1\u03d9\11\uffff\1\u03db"+
            "\2\uffff\1\u03e5\6\uffff\1\u03e4\4\uffff\1\u03dc\1\uffff\1\u03e0"+
            "\4\uffff\1\u03dd\5\uffff\1\u03dc\1\uffff\1\u03e0\3\uffff\1\u03de"+
            "\16\uffff\1\u03e6\22\uffff\1\u03df\6\uffff\1\u03e7\1\u03e8\1"+
            "\u03e9\25\uffff\1\u03e1\7\uffff\1\u03ec\6\uffff\1\u03ed\1\uffff"+
            "\1\u03eb\3\uffff\1\u03ea\2\uffff\1\u03e3\2\uffff\1\u03e3\7\uffff"+
            "\1\u03e2\1\uffff\1\u03ea\1\u03e3\4\uffff\1\u03d8",
            "\1\u03ef\75\uffff\1\u03f4\1\u03f7\1\u03fa\2\uffff\1\u03ef\2"+
            "\u03fa\1\u03f3\2\uffff\1\u03f1\1\u03fa\2\u03f2\1\u03f0\1\u03fa"+
            "\1\u03ee\2\u03f2\1\u03fa\1\u03f3\1\uffff\1\u03f6\1\u03fa\1\u03f8"+
            "\1\u03ef\1\u03fa\1\u03f0\1\u03fa\1\u03ee\1\u03f9\1\u03f1\1\u03fa"+
            "\1\uffff\1\u03f5\1\u03fa\26\uffff\1\u03fb",
            "\1\u03fd\75\uffff\1\u0402\1\u0405\1\u0408\2\uffff\1\u03fd\2"+
            "\u0408\1\u0401\2\uffff\1\u03ff\1\u0408\2\u0400\1\u03fe\1\u0408"+
            "\1\u03fc\2\u0400\1\u0408\1\u0401\1\uffff\1\u0404\1\u0408\1\u0406"+
            "\1\u03fd\1\u0408\1\u03fe\1\u0408\1\u03fc\1\u0407\1\u03ff\1\u0408"+
            "\1\uffff\1\u0403\1\u0408\26\uffff\1\u0409",
            "\1\u040b\75\uffff\1\u0410\1\u0413\1\u0416\2\uffff\1\u040b\2"+
            "\u0416\1\u040f\2\uffff\1\u040d\1\u0416\2\u040e\1\u040c\1\u0416"+
            "\1\u040a\2\u040e\1\u0416\1\u040f\1\uffff\1\u0412\1\u0416\1\u0414"+
            "\1\u040b\1\u0416\1\u040c\1\u0416\1\u040a\1\u0415\1\u040d\1\u0416"+
            "\1\uffff\1\u0411\1\u0416\26\uffff\1\u0417",
            "\1\u0419\75\uffff\1\u041e\1\u0421\1\u0424\2\uffff\1\u0419\2"+
            "\u0424\1\u041d\2\uffff\1\u041b\1\u0424\2\u041c\1\u041a\1\u0424"+
            "\1\u0418\2\u041c\1\u0424\1\u041d\1\uffff\1\u0420\1\u0424\1\u0422"+
            "\1\u0419\1\u0424\1\u041a\1\u0424\1\u0418\1\u0423\1\u041b\1\u0424"+
            "\1\uffff\1\u041f\1\u0424\26\uffff\1\u0425",
            "\1\u0427\75\uffff\1\u042c\1\u042f\1\u0432\2\uffff\1\u0427\2"+
            "\u0432\1\u042b\2\uffff\1\u0429\1\u0432\2\u042a\1\u0428\1\u0432"+
            "\1\u0426\2\u042a\1\u0432\1\u042b\1\uffff\1\u042e\1\u0432\1\u0430"+
            "\1\u0427\1\u0432\1\u0428\1\u0432\1\u0426\1\u0431\1\u0429\1\u0432"+
            "\1\uffff\1\u042d\1\u0432\26\uffff\1\u0433",
            "\1\u0434",
            "\1\u0435",
            "\1\u0436",
            "\1\u0437\u0084\uffff\1\u0438\2\uffff\1\u0438\12\uffff\1\u0438",
            "\1\u0439\u0084\uffff\1\u043a\2\uffff\1\u043a\12\uffff\1\u043a",
            "\1\u043b\u0084\uffff\1\u043c\2\uffff\1\u043c\12\uffff\1\u043c",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
    static final short[][] DFA82_transition;

    static {
        int numStates = DFA82_transitionS.length;
        DFA82_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
        }
    }

    class DFA82 extends DFA {

        public DFA82(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 82;
            this.eot = DFA82_eot;
            this.eof = DFA82_eof;
            this.min = DFA82_min;
            this.max = DFA82_max;
            this.accept = DFA82_accept;
            this.special = DFA82_special;
            this.transition = DFA82_transition;
        }
        public String getDescription() {
            return "()* loopback of 616:23: ( COMMA classical_expr_wrp )*";
        }
    }
    static final String DFA85_eotS =
        "\u00a9\uffff";
    static final String DFA85_eofS =
        "\57\uffff\1\2\171\uffff";
    static final String DFA85_minS =
        "\2\6\26\uffff\1\6\1\uffff\2\6\23\uffff\2\6\2\uffff\1\6\20\uffff"+
        "\1\u0081\7\uffff\1\u0081\134\uffff";
    static final String DFA85_maxS =
        "\2\u00d2\26\uffff\1\u00ac\1\uffff\1\u00d2\1\177\23\uffff\2\u00d2"+
        "\2\uffff\1\u00d2\20\uffff\1\u0081\7\uffff\1\u0081\134\uffff";
    static final String DFA85_acceptS =
        "\2\uffff\1\2\23\uffff\1\3\1\1\63\uffff\1\4\57\uffff\1\2\25\uffff"+
        "\1\2\25\uffff\2\2";
    static final String DFA85_specialS =
        "\u00a9\uffff}>";
    static final String[] DFA85_transitionS = {
            "\1\2\63\uffff\1\2\11\uffff\1\2\2\uffff\1\1\5\uffff\1\26\1\2"+
            "\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2"+
            "\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2\35\uffff"+
            "\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff"+
            "\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "\1\2\16\uffff\1\2\44\uffff\1\30\11\uffff\1\2\2\uffff\1\2\6"+
            "\uffff\1\2\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1"+
            "\uffff\1\2\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2"+
            "\2\uffff\1\27\22\uffff\1\33\7\uffff\1\2\6\uffff\1\2\1\uffff"+
            "\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff"+
            "\2\2\4\uffff\1\32",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\2\22\uffff\1\2\52\uffff\3\2\1\63\1\uffff\4\2\1\uffff\1\60"+
            "\13\2\1\uffff\13\2\1\uffff\2\2\26\uffff\1\57\54\uffff\1\2",
            "",
            "\1\2\63\uffff\1\2\14\uffff\1\113\6\uffff\1\104\2\uffff\1\2"+
            "\55\uffff\1\2\47\uffff\1\2\27\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\2\2\uffff\1\2\4\uffff\1\2",
            "\1\2\100\uffff\1\113\6\uffff\1\114\2\uffff\1\2\55\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\2\12\uffff\2\2\6\uffff\1\2\40\uffff\1\2\11\uffff\4\2\1\uffff"+
            "\4\2\1\27\33\2\14\uffff\1\2\11\uffff\3\2\2\uffff\1\2\3\uffff"+
            "\1\2\6\uffff\3\2\25\uffff\1\2\4\uffff\1\2\2\uffff\1\2\6\uffff"+
            "\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\2\1\uffff\2\2\4\uffff\1\2",
            "\1\2\63\uffff\1\2\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff"+
            "\1\2\16\uffff\1\2\13\uffff\1\173\6\uffff\1\2\6\uffff\3\2\35"+
            "\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2"+
            "\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "",
            "\1\u0091\63\uffff\1\2\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2"+
            "\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2"+
            "\3\uffff\1\2\16\uffff\1\2\11\uffff\1\2\10\uffff\1\2\6\uffff"+
            "\3\2\35\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff"+
            "\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00a7",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00a8",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA85_eot = DFA.unpackEncodedString(DFA85_eotS);
    static final short[] DFA85_eof = DFA.unpackEncodedString(DFA85_eofS);
    static final char[] DFA85_min = DFA.unpackEncodedStringToUnsignedChars(DFA85_minS);
    static final char[] DFA85_max = DFA.unpackEncodedStringToUnsignedChars(DFA85_maxS);
    static final short[] DFA85_accept = DFA.unpackEncodedString(DFA85_acceptS);
    static final short[] DFA85_special = DFA.unpackEncodedString(DFA85_specialS);
    static final short[][] DFA85_transition;

    static {
        int numStates = DFA85_transitionS.length;
        DFA85_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA85_transition[i] = DFA.unpackEncodedString(DFA85_transitionS[i]);
        }
    }

    class DFA85 extends DFA {

        public DFA85(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 85;
            this.eot = DFA85_eot;
            this.eof = DFA85_eof;
            this.min = DFA85_min;
            this.max = DFA85_max;
            this.accept = DFA85_accept;
            this.special = DFA85_special;
            this.transition = DFA85_transition;
        }
        public String getDescription() {
            return "625:19: ( struct_init_wrapper | classical_expr_wrp | array_init_wrapper | ( func_pointer2 ( method_call_wrapper )? ) )";
        }
    }
    static final String DFA90_eotS =
        "\162\uffff";
    static final String DFA90_eofS =
        "\162\uffff";
    static final String DFA90_minS =
        "\1\72\1\6\3\uffff\2\6\7\uffff\1\72\6\uffff\1\72\1\6\16\uffff\1\6"+
        "\114\uffff";
    static final String DFA90_maxS =
        "\1\u00d2\1\u00ca\3\uffff\2\u00d2\7\uffff\1\u00d2\6\uffff\1\u00cd"+
        "\1\u00ac\16\uffff\1\u00ca\114\uffff";
    static final String DFA90_acceptS =
        "\2\uffff\1\1\1\uffff\1\2\75\uffff\2\1\22\uffff\1\1\21\uffff\1\1"+
        "\11\uffff";
    static final String DFA90_specialS =
        "\162\uffff}>";
    static final String[] DFA90_transitionS = {
            "\1\1\154\uffff\1\4\27\uffff\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff"+
            "\1\2\4\uffff\1\4",
            "\1\4\13\uffff\1\2\6\uffff\1\2\54\uffff\1\2\1\5\2\uffff\2\2"+
            "\2\uffff\1\6\1\uffff\1\2\3\uffff\1\2\3\uffff\1\2\3\uffff\1\2"+
            "\2\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\33\uffff\1"+
            "\2\47\uffff\1\2\35\uffff\1\2",
            "",
            "",
            "",
            "\1\16\63\uffff\1\26\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4"+
            "\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3"+
            "\uffff\1\2\16\uffff\1\2\11\uffff\1\2\10\uffff\1\2\6\uffff\3"+
            "\2\25\uffff\1\4\7\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff"+
            "\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff"+
            "\1\25",
            "\1\2\63\uffff\1\2\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff"+
            "\1\2\16\uffff\1\2\13\uffff\1\45\6\uffff\1\2\6\uffff\3\2\35\uffff"+
            "\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff"+
            "\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\103\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4\uffff\1\2\1\uffff"+
            "\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff\1\2\16\uffff"+
            "\1\2\22\uffff\1\2\6\uffff\3\2\25\uffff\1\4\7\uffff\1\2\6\uffff"+
            "\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\2\1\uffff\2\2\4\uffff\1\102",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\2\23\uffff\1\4\60\uffff\1\4\77\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\2\2\uffff\1\2",
            "\1\2\13\uffff\1\2\6\uffff\1\2\52\uffff\4\2\1\uffff\4\2\1\uffff"+
            "\1\126\13\2\1\uffff\13\2\1\uffff\2\2\26\uffff\1\150\54\uffff"+
            "\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\4\13\uffff\1\150\6\uffff\1\150\54\uffff\1\150\1\4\2\uffff"+
            "\2\150\2\uffff\1\150\1\uffff\1\150\3\uffff\1\150\3\uffff\1\150"+
            "\3\uffff\1\150\2\uffff\1\150\1\uffff\1\150\3\uffff\1\150\2\uffff"+
            "\1\150\33\uffff\1\150\47\uffff\1\150\35\uffff\1\150",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA90_eot = DFA.unpackEncodedString(DFA90_eotS);
    static final short[] DFA90_eof = DFA.unpackEncodedString(DFA90_eofS);
    static final char[] DFA90_min = DFA.unpackEncodedStringToUnsignedChars(DFA90_minS);
    static final char[] DFA90_max = DFA.unpackEncodedStringToUnsignedChars(DFA90_maxS);
    static final short[] DFA90_accept = DFA.unpackEncodedString(DFA90_acceptS);
    static final short[] DFA90_special = DFA.unpackEncodedString(DFA90_specialS);
    static final short[][] DFA90_transition;

    static {
        int numStates = DFA90_transitionS.length;
        DFA90_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA90_transition[i] = DFA.unpackEncodedString(DFA90_transitionS[i]);
        }
    }

    class DFA90 extends DFA {

        public DFA90(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 90;
            this.eot = DFA90_eot;
            this.eof = DFA90_eof;
            this.min = DFA90_min;
            this.max = DFA90_max;
            this.accept = DFA90_accept;
            this.special = DFA90_special;
            this.transition = DFA90_transition;
        }
        public String getDescription() {
            return "649:4: ( object_name | func_pointer1 )";
        }
    }
    static final String DFA102_eotS =
        "\u00b8\uffff";
    static final String DFA102_eofS =
        "\u00b8\uffff";
    static final String DFA102_minS =
        "\1\72\1\6\23\uffff\1\72\2\6\7\uffff\1\6\14\uffff\3\6\1\u0081\1\72"+
        "\1\6\1\uffff\1\6\2\uffff\3\6\21\uffff\1\u0081\1\72\1\6\153\uffff";
    static final String DFA102_maxS =
        "\2\u00d2\23\uffff\2\u00d2\1\u00ac\7\uffff\1\177\14\uffff\1\u00d2"+
        "\1\177\1\u00ac\1\u0081\1\72\1\177\1\uffff\1\177\2\uffff\3\u00d2"+
        "\21\uffff\1\u0081\1\72\1\177\153\uffff";
    static final String DFA102_acceptS =
        "\2\uffff\1\2\57\uffff\1\1\6\uffff\1\1\23\uffff\16\1\20\uffff\11"+
        "\1\25\uffff\1\1\24\uffff\2\1\24\uffff\4\1";
    static final String DFA102_specialS =
        "\u00b8\uffff}>";
    static final String[] DFA102_transitionS = {
            "\1\2\11\uffff\1\2\2\uffff\1\1\6\uffff\1\2\4\uffff\1\2\1\uffff"+
            "\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff\1\2\16\uffff"+
            "\1\2\22\uffff\1\2\6\uffff\3\2\35\uffff\1\2\6\uffff\1\2\1\uffff"+
            "\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff"+
            "\2\2\4\uffff\1\2",
            "\1\2\16\uffff\1\25\44\uffff\1\27\11\uffff\1\2\2\uffff\1\2\6"+
            "\uffff\1\2\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1"+
            "\uffff\1\2\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2"+
            "\25\uffff\1\37\7\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1"+
            "\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1"+
            "\26",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\55\154\uffff\1\55\52\uffff\1\54",
            "\1\61\63\uffff\1\56\23\uffff\1\57\2\uffff\1\60\55\uffff\1\62"+
            "\47\uffff\1\63\27\uffff\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff"+
            "\1\2\4\uffff\1\63",
            "\1\70\22\uffff\1\2\52\uffff\4\2\1\uffff\4\2\1\uffff\1\66\2"+
            "\2\1\67\10\2\1\uffff\13\2\1\uffff\2\2\26\uffff\1\71\54\uffff"+
            "\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\114\107\uffff\1\112\2\uffff\1\113\55\uffff\1\115",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\121\63\uffff\1\116\23\uffff\1\117\2\uffff\1\120\55\uffff"+
            "\1\122\47\uffff\1\116\52\uffff\1\116",
            "\1\125\107\uffff\1\123\2\uffff\1\124\55\uffff\1\126",
            "\1\131\22\uffff\1\2\52\uffff\4\2\1\uffff\4\2\1\uffff\1\127"+
            "\2\2\1\130\10\2\1\uffff\13\2\1\uffff\2\2\26\uffff\1\132\54\uffff"+
            "\1\2",
            "\1\153",
            "\1\154",
            "\1\156\170\uffff\1\155",
            "",
            "\1\161\107\uffff\1\157\2\uffff\1\160\55\uffff\1\162",
            "",
            "",
            "\1\2\63\uffff\1\2\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff"+
            "\1\2\16\uffff\1\2\13\uffff\1\163\6\uffff\1\2\6\uffff\3\2\35"+
            "\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2"+
            "\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "\1\2\63\uffff\1\u0089\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2"+
            "\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2"+
            "\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2\35\uffff"+
            "\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff"+
            "\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "\1\u009f\63\uffff\1\2\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2"+
            "\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2"+
            "\3\uffff\1\2\16\uffff\1\2\11\uffff\1\u009e\10\uffff\1\2\6\uffff"+
            "\3\2\35\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff"+
            "\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00b4",
            "\1\u00b5",
            "\1\u00b7\170\uffff\1\u00b6",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA102_eot = DFA.unpackEncodedString(DFA102_eotS);
    static final short[] DFA102_eof = DFA.unpackEncodedString(DFA102_eofS);
    static final char[] DFA102_min = DFA.unpackEncodedStringToUnsignedChars(DFA102_minS);
    static final char[] DFA102_max = DFA.unpackEncodedStringToUnsignedChars(DFA102_maxS);
    static final short[] DFA102_accept = DFA.unpackEncodedString(DFA102_acceptS);
    static final short[] DFA102_special = DFA.unpackEncodedString(DFA102_specialS);
    static final short[][] DFA102_transition;

    static {
        int numStates = DFA102_transitionS.length;
        DFA102_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA102_transition[i] = DFA.unpackEncodedString(DFA102_transitionS[i]);
        }
    }

    class DFA102 extends DFA {

        public DFA102(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 102;
            this.eot = DFA102_eot;
            this.eof = DFA102_eof;
            this.min = DFA102_min;
            this.max = DFA102_max;
            this.accept = DFA102_accept;
            this.special = DFA102_special;
            this.transition = DFA102_transition;
        }
        public String getDescription() {
            return "732:14: ( type_convertion )?";
        }
    }
    static final String DFA112_eotS =
        "\u00a4\uffff";
    static final String DFA112_eofS =
        "\1\2\31\uffff\1\2\26\uffff\1\116\162\uffff";
    static final String DFA112_minS =
        "\2\6\30\uffff\1\6\24\uffff\3\6\162\uffff";
    static final String DFA112_maxS =
        "\2\u00d2\30\uffff\1\u00d2\24\uffff\3\u00d2\162\uffff";
    static final String DFA112_acceptS =
        "\2\uffff\1\2\113\uffff\1\1\1\uffff\1\1\24\uffff\1\1\30\uffff\3\1"+
        "\3\uffff\1\1\11\uffff\1\1\3\uffff\3\1\17\uffff";
    static final String DFA112_specialS =
        "\u00a4\uffff}>";
    static final String[] DFA112_transitionS = {
            "\1\2\12\uffff\2\2\47\uffff\1\2\11\uffff\3\2\2\uffff\4\2\2\uffff"+
            "\2\2\1\1\10\2\1\uffff\13\2\1\uffff\2\2\26\uffff\3\2\2\uffff"+
            "\1\2\42\uffff\1\2\27\uffff\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff"+
            "\1\2\4\uffff\1\2",
            "\1\2\63\uffff\1\32\11\uffff\1\2\2\uffff\1\2\6\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1\uffff\1\2\3\uffff"+
            "\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2\35\uffff\1\2\6\uffff"+
            "\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\2\2\uffff\1\2\7\uffff"+
            "\1\2\1\uffff\2\2\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\57\12\uffff\1\2\1\60\6\uffff\1\2\40\uffff\1\2\11\uffff\4"+
            "\2\1\uffff\4\2\1\uffff\10\2\1\61\3\2\1\uffff\13\2\1\uffff\2"+
            "\2\26\uffff\3\2\2\uffff\1\2\42\uffff\1\2\4\uffff\1\2\22\uffff"+
            "\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff\1\2\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\120\13\uffff\1\116\47\uffff\1\2\11\uffff\1\2\2\uffff\1\2"+
            "\6\uffff\1\2\4\uffff\1\2\1\uffff\1\2\1\116\3\uffff\1\2\5\uffff"+
            "\1\2\1\uffff\1\2\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff"+
            "\3\2\35\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff"+
            "\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1\2",
            "\1\2\22\uffff\1\2\40\uffff\1\145\11\uffff\1\2\2\uffff\1\2\5"+
            "\uffff\2\2\4\uffff\1\2\1\uffff\1\2\4\uffff\1\2\5\uffff\1\2\1"+
            "\uffff\1\2\3\uffff\1\2\16\uffff\1\2\22\uffff\1\2\6\uffff\3\2"+
            "\25\uffff\1\2\7\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\1"+
            "\2\2\uffff\1\2\2\uffff\1\2\7\uffff\1\2\1\uffff\2\2\4\uffff\1"+
            "\2",
            "\1\177\12\uffff\1\u008e\1\116\47\uffff\1\u008e\11\uffff\1\u0084"+
            "\2\116\1\2\1\uffff\1\u0093\3\116\1\uffff\1\2\4\116\1\u0080\1"+
            "\116\1\176\4\116\1\2\3\116\1\u0093\1\116\1\u0080\1\116\1\176"+
            "\3\116\1\2\2\116\14\uffff\1\2\11\uffff\1\116\2\u008e\2\uffff"+
            "\1\116\3\uffff\1\2\6\uffff\3\2\25\uffff\1\u0093\7\uffff\1\2"+
            "\6\uffff\1\2\1\uffff\1\2\3\uffff\1\2\2\uffff\1\u0093\2\uffff"+
            "\1\u0093\7\uffff\1\u0092\1\uffff\1\2\1\u0093\4\uffff\1\u0094",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA112_eot = DFA.unpackEncodedString(DFA112_eotS);
    static final short[] DFA112_eof = DFA.unpackEncodedString(DFA112_eofS);
    static final char[] DFA112_min = DFA.unpackEncodedStringToUnsignedChars(DFA112_minS);
    static final char[] DFA112_max = DFA.unpackEncodedStringToUnsignedChars(DFA112_maxS);
    static final short[] DFA112_accept = DFA.unpackEncodedString(DFA112_acceptS);
    static final short[] DFA112_special = DFA.unpackEncodedString(DFA112_specialS);
    static final short[][] DFA112_transition;

    static {
        int numStates = DFA112_transitionS.length;
        DFA112_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA112_transition[i] = DFA.unpackEncodedString(DFA112_transitionS[i]);
        }
    }

    class DFA112 extends DFA {

        public DFA112(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 112;
            this.eot = DFA112_eot;
            this.eof = DFA112_eof;
            this.min = DFA112_min;
            this.max = DFA112_max;
            this.accept = DFA112_accept;
            this.special = DFA112_special;
            this.transition = DFA112_transition;
        }
        public String getDescription() {
            return "760:29: ( generic )?";
        }
    }
    static final String DFA116_eotS =
        "\u01c3\uffff";
    static final String DFA116_eofS =
        "\43\uffff\1\4\23\uffff\1\4\127\uffff\1\4\u0133\uffff";
    static final String DFA116_minS =
        "\1\6\1\uffff\2\6\24\uffff\1\6\7\uffff\4\6\20\uffff\4\6\20\uffff"+
        "\1\6\25\uffff\1\6\25\uffff\1\6\24\uffff\3\6\3\uffff\2\6\u0132\uffff";
    static final String DFA116_maxS =
        "\1\u00d2\1\uffff\1\u00d2\1\u00ac\24\uffff\1\u00ac\7\uffff\4\u00d2"+
        "\20\uffff\4\u00d2\20\uffff\1\u00ac\25\uffff\1\u00ac\25\uffff\1\u00d2"+
        "\24\uffff\3\u00d2\3\uffff\1\u00d2\1\u00cd\u0132\uffff";
    static final String DFA116_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\u008c\uffff\3\1\36\uffff\1\1\25\uffff\1"+
        "\1\25\uffff\1\1\24\uffff\3\1\3\uffff\5\1\36\uffff\3\1\20\uffff\3"+
        "\1\51\uffff\24\1\1\uffff\23\1\2\uffff\22\1\3\uffff\4\1\45\uffff";
    static final String DFA116_specialS =
        "\u01c3\uffff}>";
    static final String[] DFA116_transitionS = {
            "\1\4\16\uffff\1\1\44\uffff\1\3\11\uffff\1\4\2\uffff\1\4\6\uffff"+
            "\1\4\4\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff"+
            "\1\4\3\uffff\1\4\16\uffff\1\4\22\uffff\1\4\6\uffff\3\4\25\uffff"+
            "\1\1\7\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\2\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\2",
            "",
            "\1\1\63\uffff\1\30\23\uffff\1\1\2\uffff\1\1\55\uffff\1\1\47"+
            "\uffff\1\1\27\uffff\1\4\2\uffff\1\4\7\uffff\1\4\2\uffff\1\4"+
            "\4\uffff\1\1",
            "\1\42\22\uffff\1\4\52\uffff\4\4\1\uffff\4\4\1\uffff\1\40\2"+
            "\4\1\41\10\4\1\uffff\13\4\1\uffff\2\4\26\uffff\1\43\54\uffff"+
            "\1\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\66\22\uffff\1\4\52\uffff\4\4\1\uffff\4\4\1\uffff\1\64\2"+
            "\4\1\65\10\4\1\uffff\13\4\1\uffff\2\4\26\uffff\1\67\54\uffff"+
            "\1\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\4\63\uffff\1\4\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4\4\uffff"+
            "\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4\3\uffff"+
            "\1\4\16\uffff\1\4\13\uffff\1\110\6\uffff\1\4\6\uffff\3\4\35"+
            "\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff\1\4\2"+
            "\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\4\63\uffff\1\136\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4\4"+
            "\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4\3"+
            "\uffff\1\4\16\uffff\1\4\22\uffff\1\4\6\uffff\3\4\35\uffff\1"+
            "\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff\1\4\2\uffff\1"+
            "\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\164\63\uffff\1\4\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4\4"+
            "\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4\3"+
            "\uffff\1\4\16\uffff\1\4\11\uffff\1\1\10\uffff\1\4\6\uffff\3"+
            "\4\35\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\2\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\u0089\12\uffff\2\4\6\uffff\1\4\40\uffff\1\u0091\11\uffff"+
            "\1\u008a\2\4\1\u0093\1\uffff\4\4\1\uffff\1\u0093\4\4\1\u008b"+
            "\1\4\1\u008f\4\4\1\1\5\4\1\u008b\1\4\1\u008f\3\4\1\1\2\4\14"+
            "\uffff\1\u0093\11\uffff\3\4\2\uffff\1\4\3\uffff\1\1\6\uffff"+
            "\3\u0093\25\uffff\1\4\4\uffff\1\4\2\uffff\1\u0093\6\uffff\1"+
            "\u0093\1\uffff\1\u0093\3\uffff\1\u0093\2\uffff\1\u0093\2\uffff"+
            "\1\u0093\7\uffff\1\u0092\1\uffff\2\u0093\4\uffff\1\u0090",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\4\63\uffff\1\4\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4\4\uffff"+
            "\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4\3\uffff"+
            "\1\4\16\uffff\1\4\13\uffff\1\u00b2\6\uffff\1\4\6\uffff\3\4\35"+
            "\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff\1\4\2"+
            "\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\4\63\uffff\1\u00c8\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4"+
            "\4\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4"+
            "\3\uffff\1\4\16\uffff\1\4\22\uffff\1\4\6\uffff\3\4\35\uffff"+
            "\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff\1\4\2\uffff"+
            "\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\u00de\63\uffff\1\4\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4"+
            "\4\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4"+
            "\3\uffff\1\4\16\uffff\1\4\11\uffff\1\u0093\10\uffff\1\4\6\uffff"+
            "\3\4\35\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\2\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "\1\u00f3\12\uffff\2\4\6\uffff\1\4\40\uffff\1\u00fb\11\uffff"+
            "\1\u00f4\2\4\1\u00fd\1\uffff\4\4\1\uffff\1\u00fd\4\4\1\u00f5"+
            "\1\4\1\u00f9\4\4\1\u0093\5\4\1\u00f5\1\4\1\u00f9\3\4\1\u0093"+
            "\2\4\14\uffff\1\u00fd\11\uffff\3\4\2\uffff\1\4\3\uffff\1\u0093"+
            "\6\uffff\3\u00fd\25\uffff\1\4\4\uffff\1\4\2\uffff\1\u00fd\6"+
            "\uffff\1\u00fd\1\uffff\1\u00fd\3\uffff\1\u00fd\2\uffff\1\u00fd"+
            "\2\uffff\1\u00fd\7\uffff\1\u00fc\1\uffff\2\u00fd\4\uffff\1\u00fa",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u011d\22\uffff\1\4\52\uffff\3\4\2\uffff\4\4\1\uffff\3\4"+
            "\1\u011c\10\4\1\uffff\13\4\1\uffff\2\4\26\uffff\1\u011e\54\uffff"+
            "\1\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u012f\13\uffff\1\u0130\6\uffff\1\4\52\uffff\4\4\1\uffff"+
            "\4\4\1\uffff\10\4\1\u0131\3\4\1\uffff\13\4\1\uffff\2\4\26\uffff"+
            "\1\4\54\uffff\1\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\u00fd\63\uffff\1\4\11\uffff\1\4\2\uffff\1\4\6\uffff\1\4"+
            "\4\uffff\1\4\1\uffff\1\4\4\uffff\1\4\5\uffff\1\4\1\uffff\1\4"+
            "\3\uffff\1\4\16\uffff\1\4\11\uffff\1\u00fd\10\uffff\1\4\6\uffff"+
            "\3\4\35\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\1\4\2\uffff"+
            "\1\4\2\uffff\1\4\7\uffff\1\4\1\uffff\2\4\4\uffff\1\4",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\4\63\uffff\1\u0163\11\uffff\1\u015c\2\uffff\1\u015b\6\uffff"+
            "\1\u0166\4\uffff\1\u015d\1\uffff\1\u0161\4\uffff\1\u015e\5\uffff"+
            "\1\u015d\1\uffff\1\u0161\3\uffff\1\u015f\16\uffff\1\u0167\22"+
            "\uffff\1\u0160\6\uffff\1\u0168\1\u0169\1\u016a\35\uffff\1\u016d"+
            "\6\uffff\1\u016e\1\uffff\1\u016c\3\uffff\1\u016b\2\uffff\1\u0165"+
            "\2\uffff\1\u0165\7\uffff\1\u0164\1\uffff\1\u016b\1\u0165\4\uffff"+
            "\1\u0162",
            "\1\4\63\uffff\1\u0176\11\uffff\1\4\2\uffff\1\u017a\6\uffff"+
            "\1\u0179\4\uffff\1\u0170\1\uffff\1\u0174\4\uffff\1\u0171\5\uffff"+
            "\1\u0170\1\uffff\1\u0174\3\uffff\1\u0172\16\uffff\1\u017b\22"+
            "\uffff\1\u0173\6\uffff\1\u017c\1\u017d\1\u017e\35\uffff\1\u0181"+
            "\6\uffff\1\u0182\1\uffff\1\u0180\3\uffff\1\u017f\2\uffff\1\u0178"+
            "\2\uffff\1\u0178\7\uffff\1\u0177\1\uffff\1\u017f\1\u0178\4\uffff"+
            "\1\u0175",
            "\1\4\63\uffff\1\u018a\11\uffff\1\4\2\uffff\1\u018e\6\uffff"+
            "\1\u018d\4\uffff\1\4\1\uffff\1\u0188\4\uffff\1\u0185\5\uffff"+
            "\1\4\1\uffff\1\u0188\3\uffff\1\u0186\16\uffff\1\u018f\22\uffff"+
            "\1\u0187\6\uffff\1\u0190\1\u0191\1\u0192\35\uffff\1\u0195\6"+
            "\uffff\1\u0196\1\uffff\1\u0194\3\uffff\1\u0193\2\uffff\1\u018c"+
            "\2\uffff\1\u018c\7\uffff\1\u018b\1\uffff\1\u0193\1\u018c\4\uffff"+
            "\1\u0189",
            "",
            "",
            "",
            "\1\4\12\uffff\2\4\47\uffff\1\u019b\11\uffff\3\4\1\u019d\1\uffff"+
            "\4\4\1\uffff\1\u019d\13\4\1\uffff\13\4\1\uffff\2\4\14\uffff"+
            "\1\u019d\11\uffff\3\4\2\uffff\1\4\12\uffff\3\u019d\25\uffff"+
            "\1\4\7\uffff\1\u019d\6\uffff\1\u019d\1\uffff\1\u019d\3\uffff"+
            "\1\u019d\2\uffff\1\u019d\2\uffff\1\u019d\7\uffff\1\u019c\1\uffff"+
            "\2\u019d\4\uffff\1\u019a",
            "\1\4\63\uffff\1\u019d\14\uffff\1\4\6\uffff\1\4\160\uffff\1"+
            "\u019d\2\uffff\1\u019d\7\uffff\1\u019d\2\uffff\1\u019d",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA116_eot = DFA.unpackEncodedString(DFA116_eotS);
    static final short[] DFA116_eof = DFA.unpackEncodedString(DFA116_eofS);
    static final char[] DFA116_min = DFA.unpackEncodedStringToUnsignedChars(DFA116_minS);
    static final char[] DFA116_max = DFA.unpackEncodedStringToUnsignedChars(DFA116_maxS);
    static final short[] DFA116_accept = DFA.unpackEncodedString(DFA116_acceptS);
    static final short[] DFA116_special = DFA.unpackEncodedString(DFA116_specialS);
    static final short[][] DFA116_transition;

    static {
        int numStates = DFA116_transitionS.length;
        DFA116_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA116_transition[i] = DFA.unpackEncodedString(DFA116_transitionS[i]);
        }
    }

    class DFA116 extends DFA {

        public DFA116(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 116;
            this.eot = DFA116_eot;
            this.eof = DFA116_eof;
            this.min = DFA116_min;
            this.max = DFA116_max;
            this.accept = DFA116_accept;
            this.special = DFA116_special;
            this.transition = DFA116_transition;
        }
        public String getDescription() {
            return "767:1: l_br_end : ( type_convertion_internal_wrapper R_BR classical_expr_wrp -> ^( TYPE_CONVERTION2 type_convertion_internal_wrapper classical_expr_wrp ) | classical_expr_wrp R_BR ( id_part_end )? );";
        }
    }
    static final String DFA160_eotS =
        "\110\uffff";
    static final String DFA160_eofS =
        "\110\uffff";
    static final String DFA160_minS =
        "\1\21\1\6\24\uffff\1\6\2\uffff\2\21\55\uffff";
    static final String DFA160_maxS =
        "\2\u00d2\24\uffff\1\u00d2\2\uffff\2\u00d2\55\uffff";
    static final String DFA160_acceptS =
        "\2\uffff\1\1\3\uffff\1\2\37\uffff\1\1\10\uffff\1\1\14\uffff\1\1"+
        "\13\uffff";
    static final String DFA160_specialS =
        "\110\uffff}>";
    static final String[] DFA160_transitionS = {
            "\1\2\1\6\11\uffff\1\6\35\uffff\1\1\14\uffff\1\2\5\uffff\1\6"+
            "\5\uffff\1\6\14\uffff\1\6\43\uffff\1\6\42\uffff\1\6\10\uffff"+
            "\1\6\4\uffff\1\6\11\uffff\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff"+
            "\1\2\4\uffff\1\6",
            "\1\6\12\uffff\2\2\11\uffff\1\2\35\uffff\1\26\14\uffff\1\2\5"+
            "\uffff\1\2\1\6\2\uffff\1\6\1\uffff\1\2\14\uffff\1\2\43\uffff"+
            "\1\2\42\uffff\1\2\10\uffff\1\2\4\uffff\1\2\11\uffff\1\32\2\uffff"+
            "\1\32\7\uffff\1\31\2\uffff\1\32\4\uffff\1\2",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\2\12\uffff\2\2\11\uffff\1\46\35\uffff\1\2\14\uffff\1\46"+
            "\5\uffff\1\46\1\2\2\uffff\1\2\1\uffff\1\46\14\uffff\1\46\43"+
            "\uffff\1\46\42\uffff\1\46\10\uffff\1\46\4\uffff\1\46\11\uffff"+
            "\1\2\2\uffff\1\2\7\uffff\1\2\2\uffff\1\2\4\uffff\1\46",
            "",
            "",
            "\1\57\1\46\11\uffff\1\57\35\uffff\1\57\14\uffff\1\57\5\uffff"+
            "\1\57\5\uffff\1\57\14\uffff\1\57\43\uffff\1\57\42\uffff\1\57"+
            "\10\uffff\1\57\4\uffff\1\57\11\uffff\1\57\2\uffff\1\57\7\uffff"+
            "\1\57\2\uffff\1\57\4\uffff\1\57",
            "\1\74\1\57\11\uffff\1\74\35\uffff\1\74\14\uffff\1\74\5\uffff"+
            "\1\74\5\uffff\1\74\14\uffff\1\74\43\uffff\1\74\42\uffff\1\74"+
            "\10\uffff\1\74\4\uffff\1\74\11\uffff\1\74\2\uffff\1\74\7\uffff"+
            "\1\74\2\uffff\1\74\4\uffff\1\74",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA160_eot = DFA.unpackEncodedString(DFA160_eotS);
    static final short[] DFA160_eof = DFA.unpackEncodedString(DFA160_eofS);
    static final char[] DFA160_min = DFA.unpackEncodedStringToUnsignedChars(DFA160_minS);
    static final char[] DFA160_max = DFA.unpackEncodedStringToUnsignedChars(DFA160_maxS);
    static final short[] DFA160_accept = DFA.unpackEncodedString(DFA160_acceptS);
    static final short[] DFA160_special = DFA.unpackEncodedString(DFA160_specialS);
    static final short[][] DFA160_transition;

    static {
        int numStates = DFA160_transitionS.length;
        DFA160_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA160_transition[i] = DFA.unpackEncodedString(DFA160_transitionS[i]);
        }
    }

    class DFA160 extends DFA {

        public DFA160(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 160;
            this.eot = DFA160_eot;
            this.eof = DFA160_eof;
            this.min = DFA160_min;
            this.max = DFA160_max;
            this.accept = DFA160_accept;
            this.special = DFA160_special;
            this.transition = DFA160_transition;
        }
        public String getDescription() {
            return "981:49: ( method_params )?";
        }
    }
    static final String DFA187_eotS =
        "\110\uffff";
    static final String DFA187_eofS =
        "\110\uffff";
    static final String DFA187_minS =
        "\1\21\7\uffff\1\6\11\uffff\1\6\2\21\63\uffff";
    static final String DFA187_maxS =
        "\1\u00d2\7\uffff\1\u00d2\11\uffff\3\u00d2\63\uffff";
    static final String DFA187_acceptS =
        "\1\uffff\1\2\10\uffff\1\1\24\uffff\1\1\16\uffff\1\1\14\uffff\1\1"+
        "\14\uffff";
    static final String DFA187_specialS =
        "\110\uffff}>";
    static final String[] DFA187_transitionS = {
            "\1\12\1\1\11\uffff\1\1\35\uffff\1\10\14\uffff\1\12\5\uffff\1"+
            "\1\5\uffff\1\1\14\uffff\1\1\43\uffff\1\1\42\uffff\1\1\10\uffff"+
            "\1\1\4\uffff\1\1\11\uffff\1\12\2\uffff\1\12\7\uffff\1\12\2\uffff"+
            "\1\12\4\uffff\1\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\1\12\uffff\2\12\11\uffff\1\12\35\uffff\1\22\14\uffff\1\12"+
            "\5\uffff\1\12\1\1\2\uffff\1\1\1\uffff\1\12\14\uffff\1\12\43"+
            "\uffff\1\12\42\uffff\1\12\10\uffff\1\12\4\uffff\1\12\11\uffff"+
            "\1\24\2\uffff\1\24\7\uffff\1\23\2\uffff\1\24\4\uffff\1\12",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\37\12\uffff\1\12\1\37\11\uffff\1\37\35\uffff\1\37\14\uffff"+
            "\1\37\5\uffff\2\37\2\uffff\1\37\1\uffff\1\37\14\uffff\1\37\43"+
            "\uffff\1\37\42\uffff\1\37\10\uffff\1\37\4\uffff\1\37\11\uffff"+
            "\1\37\2\uffff\1\37\7\uffff\1\37\2\uffff\1\37\4\uffff\1\37",
            "\2\56\11\uffff\1\56\35\uffff\1\56\14\uffff\1\56\5\uffff\1\56"+
            "\5\uffff\1\56\14\uffff\1\56\43\uffff\1\56\42\uffff\1\56\10\uffff"+
            "\1\56\4\uffff\1\56\11\uffff\1\56\2\uffff\1\56\7\uffff\1\56\2"+
            "\uffff\1\56\4\uffff\1\56",
            "\2\73\11\uffff\1\73\35\uffff\1\73\14\uffff\1\73\5\uffff\1\73"+
            "\5\uffff\1\73\14\uffff\1\73\43\uffff\1\73\42\uffff\1\73\10\uffff"+
            "\1\73\4\uffff\1\73\11\uffff\1\73\2\uffff\1\73\7\uffff\1\73\2"+
            "\uffff\1\73\4\uffff\1\73",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA187_eot = DFA.unpackEncodedString(DFA187_eotS);
    static final short[] DFA187_eof = DFA.unpackEncodedString(DFA187_eofS);
    static final char[] DFA187_min = DFA.unpackEncodedStringToUnsignedChars(DFA187_minS);
    static final char[] DFA187_max = DFA.unpackEncodedStringToUnsignedChars(DFA187_maxS);
    static final short[] DFA187_accept = DFA.unpackEncodedString(DFA187_acceptS);
    static final short[] DFA187_special = DFA.unpackEncodedString(DFA187_specialS);
    static final short[][] DFA187_transition;

    static {
        int numStates = DFA187_transitionS.length;
        DFA187_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA187_transition[i] = DFA.unpackEncodedString(DFA187_transitionS[i]);
        }
    }

    class DFA187 extends DFA {

        public DFA187(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 187;
            this.eot = DFA187_eot;
            this.eof = DFA187_eof;
            this.min = DFA187_min;
            this.max = DFA187_max;
            this.accept = DFA187_accept;
            this.special = DFA187_special;
            this.transition = DFA187_transition;
        }
        public String getDescription() {
            return "()+ loopback of 1039:4: ( method_param_wrapper )+";
        }
    }
 

    public static final BitSet FOLLOW_code_internal_in_code471 = new BitSet(new long[]{0x0400000010200002L,0x0000000000000000L,0x000C008000100800L,0x0000000000050040L});
    public static final BitSet FOLLOW_operator_wrapper_in_code_internal485 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_wrapper_in_code_internal491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_operator_in_operator_wrapper502 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extern_wrapper_in_operator520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_section_wrapper_in_operator526 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_start_wrapper_in_operator531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interface_declaration_wrapper_in_operator538 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_struct_declaration_wrapper_in_operator544 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_declaration_wrapper_in_operator549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_in_operator554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_extern_in_extern_wrapper572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_198_in_extern591 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000080000000000L});
    public static final BitSet FOLLOW_171_in_extern594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_L_FBR_in_extern597 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFEL,0x00000000000FFFFFL});
    public static final BitSet FOLLOW_set_in_extern599 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_extern604 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_in_implementation_wrapper616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_178_in_implementation635 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_implementation638 = new BitSet(new long[]{0x0400000000020000L,0x0000000100080080L,0x0201008000100800L,0x0000000000050040L});
    public static final BitSet FOLLOW_category_in_implementation641 = new BitSet(new long[]{0x0400000000020000L,0x0000000100080000L,0x0201008000100800L,0x0000000000050040L});
    public static final BitSet FOLLOW_super_class_in_implementation644 = new BitSet(new long[]{0x0400000000000000L,0x0000000100080000L,0x0201008000100800L,0x0000000000050040L});
    public static final BitSet FOLLOW_implementation_body_in_implementation649 = new BitSet(new long[]{0x0400000000000000L,0x0000000100080000L,0x0201008000100800L,0x0000000000050040L});
    public static final BitSet FOLLOW_176_in_implementation654 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_implementation657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_category669 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_category672 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_category675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_directives_in_implementation_body693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_in_implementation_body699 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_section_wrapper_in_implementation_body705 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method_wrapper_in_implementation_body711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_started_wrapper_in_implementation_body717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_declaration_wrapper_in_implementation_body723 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_struct_declaration_wrapper_in_implementation_body728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_synthesize_in_directives739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_185_in_synthesize752 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_synthesize755 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000800L,0x0000000000000010L});
    public static final BitSet FOLLOW_L_EQ_in_synthesize758 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_synthesize760 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_COMMA_in_synthesize765 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_synthesize767 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000800L,0x0000000000000010L});
    public static final BitSet FOLLOW_L_EQ_in_synthesize770 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_synthesize772 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_synthesize778 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_208_in_typedef790 = new BitSet(new long[]{0x0400000010000000L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_typedef_declaration_wrapper_in_typedef794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_struct_declaration_wrapper_in_typedef798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_rename_wrapper_in_typedef802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_rename_in_type_rename_wrapper816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_type_rename835 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_type_rename837 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_type_rename839 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_section_in_static_section_wrapper851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STATIC_PREFIX_in_static_section873 = new BitSet(new long[]{0x0400000010200000L,0x0000000000002000L,0x0000008000100010L,0x0000000000040800L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_static_section875 = new BitSet(new long[]{0x0400000010000000L,0x0000000000002000L,0x0000008000100010L,0x0000000000040800L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_static_section878 = new BitSet(new long[]{0x0400000010000000L,0x0000000000002000L,0x0000008000000010L,0x0000000000040800L});
    public static final BitSet FOLLOW_ENUM_PREFIX_in_static_section881 = new BitSet(new long[]{0x0400000000000000L,0x0000000000002000L,0x0000008000000010L,0x0000000000040800L});
    public static final BitSet FOLLOW_static_section2_in_static_section884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_inline_section_in_static_section2893 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method_wrapper2_in_static_section2900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_section3_in_static_section2907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_203_in_inline_section919 = new BitSet(new long[]{0x0400000010000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_ENUM_PREFIX_in_inline_section921 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_field_type_in_inline_section924 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_inline_section926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002080L,0x0000000000000010L});
    public static final BitSet FOLLOW_method_params2_in_inline_section929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L,0x0000000000000010L});
    public static final BitSet FOLLOW_block_wrapper_in_inline_section933 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMICOLON_in_inline_section937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_in_static_section3948 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_static_section3950 = new BitSet(new long[]{0x0000000000000000L,0x0000012291114CC0L,0x0000000000000010L});
    public static final BitSet FOLLOW_indexed_in_static_section3952 = new BitSet(new long[]{0x0000000000000000L,0x0000012291114CC0L,0x0000000000000010L});
    public static final BitSet FOLLOW_static_end_in_static_section3956 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method_wrapper3_in_static_end968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_end_in_static_end974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_end_internal_in_field_end985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_assign_wrapper_in_field_end_internal1003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_field_end_internal1006 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method3_in_implementation_method_wrapper31018 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_header_body3_in_implementation_method31036 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L,0x2000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_implementation_method31039 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L,0x2000000000000000L});
    public static final BitSet FOLLOW_attribute_in_implementation_method31044 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_implementation_method31049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_189_in_attribute1062 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_attribute1065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_attribute1068 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_193_in_attribute1071 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_attribute1074 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_attribute1077 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_attribute1080 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMICOLON_in_implementation_method21092 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_implementation_method21097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_started_in_field_type_started_wrapper1109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_in_field_type_started1128 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_field_type_started1130 = new BitSet(new long[]{0x0000000000000000L,0x0000012291110CC0L,0x0000000000000010L});
    public static final BitSet FOLLOW_classic_method_declaration_wrapper_in_field_type_started1133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_declaration_end_wrapper_in_field_type_started1137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_declaration_end_in_field_declaration_end_wrapper1148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classic_method_declaration_in_classic_method_declaration_wrapper1166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_params2_in_classic_method_declaration1186 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_classic_method_declaration1191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method_in_implementation_method_wrapper1204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_implementation_method2_in_implementation_method_wrapper21221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_header_body_in_implementation_method1238 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_implementation_method1240 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_implementation_method1245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_in_block_wrapper1258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_block1280 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_block_internal_full_in_block1286 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_block_in_block1290 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_R_FBR_in_block1298 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_block_case1313 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7FCL});
    public static final BitSet FOLLOW_block_internal_full_in_block_case1319 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7FCL});
    public static final BitSet FOLLOW_block_in_block_case1323 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138991L,0x00000000000CF7FCL});
    public static final BitSet FOLLOW_default_stmt_in_block_case1332 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_block_case1337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_internal_in_block_internal_full1349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_try_stmt_wrapper_in_block_internal1360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_throw_stmt_wrapper_in_block_internal1365 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_start_wrapper_in_block_internal1370 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_do_stmt_in_block_internal1377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_const_expression_wrapper_in_block_internal1382 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variable_init_wrapper_in_block_internal1389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_if_stmt_wrapper_in_block_internal1394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_else_stmt_in_block_internal1399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switch_stmt_wrapper_in_block_internal1404 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_return_stmt_in_block_internal1409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_wrapper_in_block_internal1414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_while_stmt_wrapper_in_block_internal1419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_single_operators_in_block_internal1424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_variable_in_block_internal1429 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1431 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enum_variable_in_block_internal1436 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typeof_started_in_block_internal1443 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_known_type_started_in_block_internal1450 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMICOLON_in_block_internal1457 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_goto_wrapper_in_block_internal1463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_198_in_block_internal1468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_goto_operator_in_goto_wrapper1480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_200_in_goto_operator1497 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_goto_operator1499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_goto_operator1501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_variable_init_in_variable_init_wrapper1512 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_variable_init1530 = new BitSet(new long[]{0x0400000000020000L,0x0000000000000000L,0x8000008000000010L,0x0000000000042404L});
    public static final BitSet FOLLOW_full_expr2_in_variable_init1534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_variable_init1537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COLON_in_variable_init1542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_known_types_in_known_type_started1554 = new BitSet(new long[]{0x0400000000000040L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_ASTERISK_in_known_type_started1556 = new BitSet(new long[]{0x0400000000000040L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_full_expr2_in_known_type_started1559 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typeof_in_typeof_started1571 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_typeof_started1573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_struct_variable1586 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_struct_variable1588 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_struct_variable1590 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_struct_variable1593 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_struct_variable1595 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ENUM_PREFIX_in_enum_variable1625 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_enum_variable1627 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_enum_variable1629 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_enum_variable1632 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_enum_variable1634 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_const_expression_wrapper1645 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_const_expression_in_const_expression_wrapper1647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_internal_in_const_expression1666 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_const_expression1668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_throw_stmt_in_throw_stmt_wrapper1677 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_186_in_throw_stmt1694 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_exception_variable_in_throw_stmt1697 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_throw_stmt1700 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_exception_variable1713 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_try_stmt_in_try_stmt_wrapper1731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_187_in_try_stmt1747 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_try_stmt1750 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0002400000000000L});
    public static final BitSet FOLLOW_catch_stmt_wrapper_in_try_stmt1753 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0002400000000000L});
    public static final BitSet FOLLOW_177_in_try_stmt1757 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_finally_block_in_try_stmt1760 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_in_finally_block1774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_catch_stmt_in_catch_stmt_wrapper1793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_174_in_catch_stmt1812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_catch_stmt1815 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_exception_type_in_catch_stmt1820 = new BitSet(new long[]{0x0400000000000040L});
    public static final BitSet FOLLOW_ASTERISK_in_catch_stmt1823 = new BitSet(new long[]{0x0400000000000040L});
    public static final BitSet FOLLOW_ID_in_catch_stmt1826 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_173_in_catch_stmt1831 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_catch_stmt1835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_catch_stmt1838 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_exception_type1852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switch_stmt_in_switch_stmt_wrapper1871 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_207_in_switch_stmt1888 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_switch_stmt1891 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_switch_expr_in_switch_stmt1894 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_switch_stmt1896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_switch_body_wrapper_in_switch_stmt1902 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_switch_body_wrapper1915 = new BitSet(new long[]{0x0400000010200240L,0x0020004504284090L,0xDD40808000138991L,0x00000000000CF7FDL});
    public static final BitSet FOLLOW_switch_body_in_switch_body_wrapper1917 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_switch_body_wrapper1919 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_internal_full_in_switch_body1938 = new BitSet(new long[]{0x0400000010200242L,0x0020004504284090L,0xDD40808000138990L,0x00000000000CF7FDL});
    public static final BitSet FOLLOW_switch_internal_in_switch_body1943 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000009L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_switch_expr1956 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_case_stmt_wrapper_in_switch_internal1973 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_default_stmt_wrapper_in_switch_internal1979 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_case_stmt_in_case_stmt_wrapper1988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_192_in_case_stmt2005 = new BitSet(new long[]{0x0400000000000000L,0x0020000000000000L,0x1000000000038000L,0x0000000000001000L});
    public static final BitSet FOLLOW_case_expr_wrapper_in_case_stmt2008 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_COLON_in_case_stmt2011 = new BitSet(new long[]{0x0400000010200242L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_case_body_wrapper_in_case_stmt2016 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_case_body_in_case_body_wrapper2030 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_break_in_case_body2049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_internal_full_in_case_body2056 = new BitSet(new long[]{0x0400000010200242L,0x0020004504284090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_case_expr_in_case_expr_wrapper2072 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_const_expr_in_case_expr2094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_case_expr2101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_case_in_block_break2112 = new BitSet(new long[]{0x0000000000000202L,0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_single_operators_in_block_break2114 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_default_stmt_in_default_stmt_wrapper2126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_195_in_default_stmt2143 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_COLON_in_default_stmt2146 = new BitSet(new long[]{0x0400000010200242L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_default_body_wrapper_in_default_stmt2151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_default_body_in_default_body_wrapper2164 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_break_in_default_body2184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_internal_full_in_default_body2190 = new BitSet(new long[]{0x0400000010200242L,0x0020004504284090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_SINGLE_OP_in_single_operators2205 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_break_wrapper_in_single_operators2212 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_break_stmt_in_break_wrapper2224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_WORD_in_break_stmt2242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_break_stmt2245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_196_in_do_stmt2255 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_if_stmt_block_in_do_stmt2258 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
    public static final BitSet FOLLOW_211_in_do_stmt2261 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_do_stmt2264 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_while_expr_in_do_stmt2267 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_do_stmt2269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_while_stmt_in_while_stmt_wrapper2278 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_211_in_while_stmt2297 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_while_stmt2300 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_while_expr_in_while_stmt2303 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_while_stmt2305 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_if_stmt_block_wrapper_in_while_stmt2308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_while_expr2321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_in_for_stmt_wrapper2340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_199_in_for_stmt2357 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_for_stmt2360 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038110L,0x0000000000043404L});
    public static final BitSet FOLLOW_for_stmt_expr_wrapper_in_for_stmt2363 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_for_stmt2365 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_if_stmt_block_in_for_stmt2368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_expr_in_for_stmt_expr_wrapper2380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_full_expr_wrapper_in_for_stmt_expr2399 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000008000000010L,0x0000000000042404L});
    public static final BitSet FOLLOW_for_stmt_int1_in_for_stmt_expr2402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_full_expr2_in_for_stmt_expr2407 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L,0x0000000000000400L});
    public static final BitSet FOLLOW_for_stmt_int1_in_for_stmt_expr2410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_int2_in_for_stmt_expr2414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_int2_in_for_stmt_expr2420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_for_stmt_int2_in_for_stmt_expr2426 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_202_in_for_stmt_int12441 = new BitSet(new long[]{0x0400000000000000L,0x0020000000004080L,0x9140800000038000L,0x0000000000043404L});
    public static final BitSet FOLLOW_object_wrapped2_in_for_stmt_int12443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMICOLON_in_for_stmt_int22463 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038110L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_for_stmt_int22465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_for_stmt_int22468 = new BitSet(new long[]{0x0400000000000042L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_for_stmt_int22470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_206_in_return_stmt2483 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038110L,0x0000000000043404L});
    public static final BitSet FOLLOW_expression_in_return_stmt2485 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_return_stmt2488 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_if_stmt_in_if_stmt_wrapper2509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_201_in_if_stmt2525 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_if_stmt2528 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_if_expr_in_if_stmt2531 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_if_stmt2533 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_if_stmt_block_wrapper_in_if_stmt2536 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_if_expr2549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_197_in_else_stmt2568 = new BitSet(new long[]{0x0400000010200240L,0x0020004504286090L,0xDD40808000138990L,0x00000000000CF7F4L});
    public static final BitSet FOLLOW_if_stmt_block_in_else_stmt2571 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_if_stmt_block_in_if_stmt_block_wrapper2580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_wrapper_in_if_stmt_block2597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_internal_in_if_stmt_block2603 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_start_in_static_start_wrapper2615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STATIC_PREFIX_in_static_start2633 = new BitSet(new long[]{0x0400000000200000L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_static_start2635 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_static_type_wrapper_in_static_start2638 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_full_expr2_in_static_start2641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_static_type_in_static_type_wrapper2653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_name_in_static_type2672 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ASTERISK_in_static_type2674 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_id_part_end_internal_in_id_part_end2686 = new BitSet(new long[]{0x0000000002000002L,0x0000000000000000L,0x0000100000000000L});
    public static final BitSet FOLLOW_DOT_in_id_part_end_internal2701 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_172_in_id_part_end_internal2705 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_id_part_in_id_part_end_internal2708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_name_internal_in_id_part2746 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004080L});
    public static final BitSet FOLLOW_function_brackets_wrapper_in_id_part2748 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_index_wrapper_in_id_part2751 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_id_part_in_object_name2764 = new BitSet(new long[]{0x0000000002000002L,0x0000000000000000L,0x0000100000000000L});
    public static final BitSet FOLLOW_id_part_end_in_object_name2766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_KBR_in_method_call_wrapper2780 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004080L,0x8000000000008000L,0x0000000000002404L});
    public static final BitSet FOLLOW_method_call2_in_method_call_wrapper2782 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_method_call_wrapper2784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call2_in_method_call_wrapper22807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_wrapper_in_method_call22826 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_method_name_in_method_call22828 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_method_call_message_list_wrapper_in_method_call22832 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_wrapper_internal_in_object_wrapper2843 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_convertion_in_object_wrapper_internal2862 = new BitSet(new long[]{0x0400000000000000L,0x0000000000004000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_object_name_in_object_wrapper_internal2865 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_wrapper_in_object_wrapper_internal2869 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_name_in_object_wrapper_internal2875 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_wrapper_in_object_wrapper_internal2880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL_in_object_wrapper_internal2885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_method_message32897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_type_convertion2916 = new BitSet(new long[]{0x0400000000200000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_convertion_internal_wrapper_in_type_convertion2918 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_type_convertion2920 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_type_convertion_internal_wrapper2929 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_convertion_internal_in_type_convertion_internal_wrapper2932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_210_in_type_convertion_internal2950 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_internal_in_type_convertion_internal2953 = new BitSet(new long[]{0x0000000000000042L,0x0000000000020000L});
    public static final BitSet FOLLOW_generic_in_type_convertion_internal2955 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ASTERISK_in_type_convertion_internal2958 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ID_in_method_name2969 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_property_in_method_name2982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_message_list_in_method_call_message_list_wrapper2999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_message_first_wrapper_in_method_call_message_list3016 = new BitSet(new long[]{0x0400000000020002L});
    public static final BitSet FOLLOW_method_call_message_wrapper_in_method_call_message_list3018 = new BitSet(new long[]{0x0400000000020002L});
    public static final BitSet FOLLOW_method_call_message_first_in_method_call_message_first_wrapper3029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COLON_in_method_call_message_first3046 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_message_wrapper_in_method_call_message_first3049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_message_in_method_call_message_wrapper3059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_prefix_in_method_call_message3078 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_incomplete_prefix_in_method_call_message3082 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_message_wrapper_in_method_call_message3085 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_message_in_message_wrapper3095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_message3113 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_message3116 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expression_in_message3118 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_expression3134 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_init_wrapper_in_expression3139 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_full_expr_in_full_expr_wrapper3150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_full_expr3167 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_full_expr3170 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_full_expr3172 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_classical_expr_wrp2_in_full_expr23183 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_full_expr23186 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000008000000000L,0x0000000000042404L});
    public static final BitSet FOLLOW_classical_expr_wrp2_in_full_expr23188 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_expr_assign_in_expr_assign_wrapper3199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assign_wrapper_in_expr_assign3218 = new BitSet(new long[]{0x0400000000000040L,0x0020004504286090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_struct_init_wrapper_in_expr_assign3221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_expr_assign3225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_array_init_wrapper_in_expr_assign3229 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_func_pointer2_in_expr_assign3234 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_method_call_wrapper_in_expr_assign3236 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_array_init_in_array_init_wrapper3248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_array_init3267 = new BitSet(new long[]{0x0400000000000040L,0x0020004504286090L,0x9140800000038101L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp3_in_array_init3270 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_COMMA_in_array_init3273 = new BitSet(new long[]{0x0400000000000040L,0x0020004504286090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp3_in_array_init3275 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_array_init3281 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_array_init_wrapper_in_classical_expr_wrp33293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_classical_expr_wrp33299 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_in_classical_expr_wrp3312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_classical_expr3329 = new BitSet(new long[]{0x0000000000000002L,0x0000012A91110C40L});
    public static final BitSet FOLLOW_expr_question_wrapper_in_classical_expr3332 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_assign_wrapper_in_classical_expr3336 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr2_in_classical_expr_wrp23348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_name_in_classical_expr23366 = new BitSet(new long[]{0x0000000000000002L,0x0000012291110C40L});
    public static final BitSet FOLLOW_func_pointer1_in_classical_expr23370 = new BitSet(new long[]{0x0000000000000002L,0x0000012291110C40L});
    public static final BitSet FOLLOW_expr_assign_wrapper_in_classical_expr23373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_question_in_expr_question_wrapper3383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_QUESTION_in_expr_question3400 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_expr_question3402 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_COLON_in_expr_question3404 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_expr_question3406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assign_in_assign_wrapper3415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simple_expr_in_simple_expr_wrapper3489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_or_or_in_simple_expr3507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_and_and_wrapper_in_expr_or_or3524 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_L_OR_OR_in_expr_or_or3527 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_or_or3529 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
    public static final BitSet FOLLOW_expr_and_and_in_expr_and_and_wrapper3540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_or_wrapper_in_expr_and_and3557 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
    public static final BitSet FOLLOW_L_AND_AND_in_expr_and_and3560 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_and_and3562 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
    public static final BitSet FOLLOW_expr_or_in_expr_or_wrapper3573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_xor_wrapper_in_expr_or3591 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_L_OR_in_expr_or3594 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_or3596 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_expr_xor_in_expr_xor_wrapper3607 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_and_wrapper_in_expr_xor3624 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
    public static final BitSet FOLLOW_L_XOR_in_expr_xor3627 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_xor3629 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
    public static final BitSet FOLLOW_expr_and_in_expr_and_wrapper3641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_eq_wrapper_in_expr_and3659 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_L_AND_in_expr_and3662 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_and3664 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
    public static final BitSet FOLLOW_expr_eq_in_expr_eq_wrapper3676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_cond_wrapper_in_expr_eq3694 = new BitSet(new long[]{0x0000000000000002L,0x0000000002001000L});
    public static final BitSet FOLLOW_set_in_expr_eq3697 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_eq3705 = new BitSet(new long[]{0x0000000000000002L,0x0000000002001000L});
    public static final BitSet FOLLOW_expr_cond_in_expr_cond_wrapper3716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_mov_wrapper_in_expr_cond3733 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C60000L});
    public static final BitSet FOLLOW_set_in_expr_cond3736 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_cond3752 = new BitSet(new long[]{0x0000000000000002L,0x0000000000C60000L});
    public static final BitSet FOLLOW_expr_mov_in_expr_mov_wrapper3763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_add_wrapper_in_expr_mov3781 = new BitSet(new long[]{0x0000000000000002L,0x0000001000008000L});
    public static final BitSet FOLLOW_set_in_expr_mov3784 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_mov3792 = new BitSet(new long[]{0x0000000000000002L,0x0000001000008000L});
    public static final BitSet FOLLOW_expr_add_in_expr_add_wrapper3804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_mult_wrapper_in_expr_add3821 = new BitSet(new long[]{0x0000000000000002L,0x0000000100080000L});
    public static final BitSet FOLLOW_set_in_expr_add3824 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_simple_expr_wrapper_in_expr_add3832 = new BitSet(new long[]{0x0000000000000002L,0x0000000100080000L});
    public static final BitSet FOLLOW_expr_mult_in_expr_mult_wrapper3843 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_unname_wrapper_in_expr_mult3860 = new BitSet(new long[]{0x0000000000000042L,0x0000000040000200L});
    public static final BitSet FOLLOW_set_in_expr_mult3863 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_unname_wrapper_in_expr_mult3875 = new BitSet(new long[]{0x0000000000000042L,0x0000000040000200L});
    public static final BitSet FOLLOW_expr_unname_in_expr_unname_wrapper3887 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASTERISK_in_expr_unname3908 = new BitSet(new long[]{0x0400000000000000L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_type_convertion_in_expr_unname3910 = new BitSet(new long[]{0x0400000000000000L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_addr_in_expr_unname3915 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_AND_in_expr_addr3925 = new BitSet(new long[]{0x0400000000000000L,0x0020004504284080L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_sign_in_expr_addr3928 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_not_wrapper_in_expr_sign3947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_not_in_expr_not_wrapper3957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_NOT_in_expr_not3976 = new BitSet(new long[]{0x0400000000000000L,0x0020004400204080L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_not2_in_expr_not3979 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_TILDA_in_expr_not23989 = new BitSet(new long[]{0x0400000000000000L,0x0020000400204080L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_size_of_in_expr_not23992 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SIZEOF_in_expr_size_of4002 = new BitSet(new long[]{0x0400000000000000L,0x0020000400204080L,0x9140800000038000L,0x0000000000043404L});
    public static final BitSet FOLLOW_expr_xcrement_in_expr_size_of4005 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_wrapped1_in_expr_xcrement4024 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_object_wrapped2_in_object_wrapped14034 = new BitSet(new long[]{0x0000000000000002L,0x0000000400200000L});
    public static final BitSet FOLLOW_210_in_object_wrapped24055 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_object_name_in_object_wrapped24058 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
    public static final BitSet FOLLOW_generic_in_object_wrapped24060 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_call_wrapper_in_object_wrapped24066 = new BitSet(new long[]{0x0000000002000002L,0x0000000000000000L,0x0000100000000000L});
    public static final BitSet FOLLOW_id_part_end_in_object_wrapped24068 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_object_wrapped24074 = new BitSet(new long[]{0x0400000000200040L,0x0020004504284090L,0x9140808000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_l_br_end_in_object_wrapped24076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_const_expr_wrapper_in_object_wrapped24089 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_started_in_object_wrapped24094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_convertion_internal_wrapper_in_l_br_end4103 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_l_br_end4105 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_l_br_end4107 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_l_br_end4122 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_l_br_end4124 = new BitSet(new long[]{0x0000000002000002L,0x0000000000000000L,0x0000100000000000L});
    public static final BitSet FOLLOW_id_part_end_in_l_br_end4126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_function_brackets_in_function_brackets_wrapper4140 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_function_brackets4159 = new BitSet(new long[]{0x0400000000000040L,0x8020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_function_brackets4162 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_COMMA_in_function_brackets4165 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_function_brackets4167 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_function_brackets4173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_index_in_index_wrapper4183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_KBR_in_index4200 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038102L,0x0000000000043404L});
    public static final BitSet FOLLOW_index_number_wrapper_in_index4202 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_index4205 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_index_number_wrapper4214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_init_in_struct_init_wrapper4231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_struct_init4248 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_struct_init4251 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_struct_name_in_struct_init4254 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_struct_init4257 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_L_FBR_in_struct_init4260 = new BitSet(new long[]{0x0400000002000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_struct_init_line_in_struct_init4266 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_COMMA_in_struct_init4269 = new BitSet(new long[]{0x0400000002000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_struct_init_line_in_struct_init4272 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_struct_init4278 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_struct_name4292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_struct_init24311 = new BitSet(new long[]{0x0400000002000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_struct_init_line_in_struct_init24317 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_COMMA_in_struct_init24320 = new BitSet(new long[]{0x0400000002000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_struct_init_line_in_struct_init24323 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_struct_init24329 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_init_var_in_struct_init_line4342 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_init_expression_in_struct_init_line4347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_struct_init_expression4360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_struct_init_method4371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_struct_init_var4383 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_id_part_in_struct_init_var4385 = new BitSet(new long[]{0x0000000002000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_L_EQ_in_struct_init_var4390 = new BitSet(new long[]{0x0400000000000040L,0x0020004504286090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_in_q_brackets_in_struct_init_var4394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_struct_init_var4398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_selector_wrapper_in_a_started4410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_encode_wrapper_in_a_started4415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_protocol_wrapper_in_a_started4420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_190_in_typeof4430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_typeof4433 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_typeof4436 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_typeof4439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_selector_in_a_selector_wrapper4450 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_184_in_a_selector4467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_a_selector4469 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_a_selector_value_wrapper_in_a_selector4471 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_a_selector4473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_protocol_in_a_protocol_wrapper4483 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_182_in_a_protocol4501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_a_protocol4503 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_a_selector_value_wrapper_in_a_protocol4505 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_a_protocol4507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_encode_in_a_encode_wrapper4517 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_175_in_a_encode4533 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_a_encode4535 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_a_selector_value_wrapper_in_a_encode4537 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_a_encode4539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_a_selector_value_in_a_selector_value_wrapper4550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_sel_id_in_a_selector_value4569 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_COLON_in_a_selector_value4573 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_sel_id_in_a_selector_value4577 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_COLON_in_a_selector_value4580 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_ID_in_sel_id4593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_property_in_sel_id4598 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_const_expr_in_const_expr_wrapper4610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMBER_in_const_expr4629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL_in_const_expr4633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL2_in_const_expr4637 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL3_in_const_expr4641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_null_stmt_in_const_expr4645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL3_in_string_literal34655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_method_brackets4665 = new BitSet(new long[]{0x0400000000000040L,0x8020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expression_in_method_brackets4669 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_COMMA_in_method_brackets4673 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_method_brackets4676 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_method_brackets4682 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_internal_in_func_pointer14692 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000080L});
    public static final BitSet FOLLOW_ASTERISK_in_func_pointer14695 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_func_pointer14698 = new BitSet(new long[]{0x0400000000000040L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_ASTERISK_in_func_pointer14700 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_internal_in_func_pointer14703 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_func_pointer14706 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_func_pointer_params_in_func_pointer14709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_func_pointer24722 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_internal_in_func_pointer24725 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_func_pointer24727 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ASTERISK_in_func_pointer24730 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_func_pointer24733 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_func_pointer_params_in_func_pointer24736 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_func_pointer24739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_func_pointer_params4752 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_func_pointer_params4755 = new BitSet(new long[]{0x0000000000040040L,0x8000000000000000L});
    public static final BitSet FOLLOW_ASTERISK_in_func_pointer_params4758 = new BitSet(new long[]{0x0000000000040040L,0x8000000000000000L});
    public static final BitSet FOLLOW_COMMA_in_func_pointer_params4762 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_func_pointer_params4765 = new BitSet(new long[]{0x0000000000040040L,0x8000000000000000L});
    public static final BitSet FOLLOW_ASTERISK_in_func_pointer_params4768 = new BitSet(new long[]{0x0000000000040040L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_func_pointer_params4773 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_method_start4784 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_method_brackets_in_method_start4786 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_in_q_brackets4797 = new BitSet(new long[]{0x0400000000000040L,0x0020004504286090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_q_brackets_source_in_in_q_brackets4800 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_in_q_brackets4802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_q_source_in_q_brackets_source4814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_q_br_source_in_q_brackets_source4819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_in_q_brackets_in_q_br_source4832 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_q_br_source4836 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_in_q_brackets_in_q_br_source4839 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_q_br_source4843 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_q_source4855 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_COMMA_in_q_source4859 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_expression_in_q_source4862 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ID_in_simple_method_call4879 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_method_brackets_in_simple_method_call4881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_KBR_in_index_brackets4897 = new BitSet(new long[]{0x0400000000000040L,0x0020004504284090L,0x9140800000038100L,0x0000000000043404L});
    public static final BitSet FOLLOW_classical_expr_wrp_in_index_brackets4900 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_index_brackets4902 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interface_declaration_in_interface_declaration_wrapper4916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_179_in_interface_declaration4934 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_interface_declaration4937 = new BitSet(new long[]{0x0400000010020000L,0x0000000100082080L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_interface_category_in_interface_declaration4940 = new BitSet(new long[]{0x0400000010020000L,0x0000000100082000L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_super_class_in_interface_declaration4944 = new BitSet(new long[]{0x0400000010000000L,0x0000000100082000L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_annotated_block_in_interface_declaration4951 = new BitSet(new long[]{0x0400000010000000L,0x0000000100082000L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_interface_methods_in_interface_declaration4955 = new BitSet(new long[]{0x0400000010000000L,0x0000000100082000L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_interface_fields_in_interface_declaration4959 = new BitSet(new long[]{0x0400000010000000L,0x0000000100082000L,0x0021008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_176_in_interface_declaration4968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_FBR_in_annotated_block4979 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0090008000000001L,0x0000000000060000L});
    public static final BitSet FOLLOW_annotated_block_internal_in_annotated_block4984 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0090008000000001L,0x0000000000060000L});
    public static final BitSet FOLLOW_R_FBR_in_annotated_block4989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_block_annotation_in_annotated_block_internal5002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_public_block_internal_in_annotated_block_internal5009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simple_field_declaration_in_public_block_internal5044 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_union_declaration_in_public_block_internal5049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_in_simple_field_declaration5061 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_simple_field_declaration5063 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_simple_field_declaration5066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_209_in_union_declaration5079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_L_FBR_in_union_declaration5082 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_simple_field_declaration_in_union_declaration5088 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000001L,0x0000000000040000L});
    public static final BitSet FOLLOW_R_FBR_in_union_declaration5093 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_union_declaration5096 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_union_declaration5099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COLON_in_super_class5113 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_super_class5116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_interface_category5136 = new BitSet(new long[]{0x0400000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_ID_in_interface_category5139 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_interface_category5143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_interface_field_wrapper_in_interface_fields5172 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x0020008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_interface_field_in_interface_field_wrapper5183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_property_prefix_in_interface_field5202 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_interface_field_declaration_in_interface_field5205 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_in_interface_field_declaration5216 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_interface_field_declaration5218 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_interface_field_declaration5220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_181_in_property_prefix5231 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_L_BR_in_property_prefix5233 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_property_in_property_prefix5235 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_COMMA_in_property_prefix5238 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002004L});
    public static final BitSet FOLLOW_property_in_property_prefix5240 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_property_prefix5244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enum_declaration_in_interface_methods5277 = new BitSet(new long[]{0x0000000010000002L,0x0000000100080000L});
    public static final BitSet FOLLOW_interface_method_in_interface_methods5281 = new BitSet(new long[]{0x0000000010000002L,0x0000000100080000L});
    public static final BitSet FOLLOW_method_header_in_interface_method5295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_header_body_in_method_header5314 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_method_header5316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_modifier_wrapper_in_method_header_body5326 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000080L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_method_type_in_method_header_body5329 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_method_header_body5333 = new BitSet(new long[]{0x0400000000060002L,0x0000000000000080L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_method_params_in_method_header_body5336 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_va_args_wrapper_in_method_header_body5339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_va_args_in_va_args_wrapper5349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COMMA_in_va_args5366 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
    public static final BitSet FOLLOW_173_in_va_args5369 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_va_args5372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_type_in_method_header_body25383 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_method_header_body25385 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_method_params2_in_method_header_body25388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_params2_in_method_header_body35398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_modifier_in_method_modifier_wrapper5407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_type_internal_in_method_type5438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_method_type_internal5456 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000100000L,0x0000000000040000L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_method_type_internal5458 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_type_internal_in_method_type_internal5461 = new BitSet(new long[]{0x0000000000000040L,0x8000000000020000L});
    public static final BitSet FOLLOW_generic_in_method_type_internal5463 = new BitSet(new long[]{0x0000000000000040L,0x8000000000000000L});
    public static final BitSet FOLLOW_ASTERISK_in_method_type_internal5466 = new BitSet(new long[]{0x0000000000000040L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_method_type_internal5469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_BR_in_method_type_internal5475 = new BitSet(new long[]{0x0400000000200040L,0x8000000000024000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_method_type_internal5477 = new BitSet(new long[]{0x0400000000000040L,0x8000000000024000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_known_types_in_method_type_internal5480 = new BitSet(new long[]{0x0400000000000040L,0x8000000000024000L});
    public static final BitSet FOLLOW_ID_in_method_type_internal5483 = new BitSet(new long[]{0x0400000000000040L,0x8000000000024000L});
    public static final BitSet FOLLOW_L_KBR_in_method_type_internal5487 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_method_type_internal5489 = new BitSet(new long[]{0x0000000000000040L,0x8000000000024000L});
    public static final BitSet FOLLOW_generic_in_method_type_internal5493 = new BitSet(new long[]{0x0000000000000040L,0x8000000000000000L});
    public static final BitSet FOLLOW_ASTERISK_in_method_type_internal5496 = new BitSet(new long[]{0x0000000000000040L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_method_type_internal5499 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_internal1_in_type_internal5540 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_L_KBR_in_type_internal5543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_type_internal5546 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_LESS_in_generic5585 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_generic_internal_wrapper_in_generic5587 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
    public static final BitSet FOLLOW_L_MORE_in_generic5589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_generic_internal_in_generic_internal_wrapper5599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_generic_internal5617 = new BitSet(new long[]{0x0000000000040042L});
    public static final BitSet FOLLOW_ASTERISK_in_generic_internal5619 = new BitSet(new long[]{0x0000000000040042L});
    public static final BitSet FOLLOW_COMMA_in_generic_internal5623 = new BitSet(new long[]{0x0400000000000000L});
    public static final BitSet FOLLOW_ID_in_generic_internal5626 = new BitSet(new long[]{0x0000000000040042L});
    public static final BitSet FOLLOW_ASTERISK_in_generic_internal5629 = new BitSet(new long[]{0x0000000000040042L});
    public static final BitSet FOLLOW_L_BR_in_method_params25641 = new BitSet(new long[]{0x0400000010200000L,0x8000000000000000L,0x0000008000100000L,0x0000000000040000L});
    public static final BitSet FOLLOW_method_param_wrapper2_in_method_params25645 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_COMMA_in_method_params25648 = new BitSet(new long[]{0x0400000010200000L,0x0000000000000000L,0x0000008000100000L,0x0000000000040000L});
    public static final BitSet FOLLOW_method_param_wrapper2_in_method_params25650 = new BitSet(new long[]{0x0000000000040000L,0x8000000000000000L});
    public static final BitSet FOLLOW_R_BR_in_method_params25656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_param2_in_method_param_wrapper25667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_method_param25685 = new BitSet(new long[]{0x0400000010000000L,0x0000000000000000L,0x0000008000100000L,0x0000000000040000L});
    public static final BitSet FOLLOW_ENUM_PREFIX_in_method_param25688 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000100000L,0x0000000000040000L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_method_param25691 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_210_in_method_param25694 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_field_type_in_method_param25697 = new BitSet(new long[]{0x0400000000000002L,0x0000000000004000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_method_param25699 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
    public static final BitSet FOLLOW_index_wrapper_in_method_param25702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_L_KBR_in_indexed5712 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_NUMBER_in_indexed5714 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_indexed5717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_param_wrapper_in_method_params5727 = new BitSet(new long[]{0x0400000000020002L,0x0000000000000080L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_method_param_in_method_param_wrapper5739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_prefix_in_method_param5759 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000080L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_COLON_in_method_param5764 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000080L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_method_type_in_method_param5767 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_method_param5770 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_prefix5782 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_COLON_in_prefix5784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_COLON_in_incomplete_prefix5803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_struct_declaration_in_typedef_struct_declaration_wrapper5825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRUCT_PREFIX_in_typedef_struct_declaration5846 = new BitSet(new long[]{0x0400000000000000L,0x0000000000002000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_typedef_struct_declaration5848 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_L_FBR_in_typedef_struct_declaration5852 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_typedef_struct_body_in_typedef_struct_declaration5857 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000001L,0x0000000000040000L});
    public static final BitSet FOLLOW_R_FBR_in_typedef_struct_declaration5861 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x8000000000000010L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_typedef_struct_declaration5864 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_typedef_struct_declaration5867 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_struct_declaration_element_wrapper_in_typedef_struct_body5880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_struct_field_in_typedef_struct_declaration_element_wrapper5892 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_in_struct_field5910 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_struct_field5912 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_COMMA_in_struct_field5916 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_struct_field5919 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_struct_field5923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_declaration_in_typedef_declaration_wrapper5939 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_declaration_in_enum_declaration5959 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ENUM_PREFIX_in_typedef_declaration5979 = new BitSet(new long[]{0x0400000000000000L,0x0000000000002000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_typedef_declaration5981 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_L_FBR_in_typedef_declaration5984 = new BitSet(new long[]{0x0400000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_typedef_declaration_element_wrapper_in_typedef_declaration5987 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_COMMA_in_typedef_declaration5991 = new BitSet(new long[]{0x0400000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_typedef_declaration_element_wrapper_in_typedef_declaration5994 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_R_FBR_in_typedef_declaration5998 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000010L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_typedef_declaration6001 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_typedef_declaration6004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typedef_declaration_element_in_typedef_declaration_element_wrapper6014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_typedef_declaration_element6033 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
    public static final BitSet FOLLOW_L_EQ_in_typedef_declaration_element6037 = new BitSet(new long[]{0x0400000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_set_in_typedef_declaration_element6040 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMBER_in_typedef_declaration_element6052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_L_EQ_in_typedef_declaration_element6054 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_NUMBER_in_typedef_declaration_element6056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_declaration_in_field_declaration_wrapper6070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_modifier_wrapper_in_field_declaration6087 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_field_type_in_field_declaration6090 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_field_declaration6092 = new BitSet(new long[]{0x0000000000000000L,0x0000012291110C40L,0x0000000000000010L});
    public static final BitSet FOLLOW_field_declaration_end_in_field_declaration6094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_assign_wrapper_in_field_declaration_end6105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_field_declaration_end6108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_start_in_type_start_wrapper6118 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_PREFIX_in_type_start6135 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000008000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_field_type_in_type_start6138 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x8000000000000000L,0x0000000000002404L});
    public static final BitSet FOLLOW_name_in_type_start6140 = new BitSet(new long[]{0x0000000000000000L,0x0000012291114CC0L,0x0000000000000010L});
    public static final BitSet FOLLOW_L_KBR_in_type_start6143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_R_KBR_in_type_start6145 = new BitSet(new long[]{0x0000000000000000L,0x0000012291110CC0L,0x0000000000000010L});
    public static final BitSet FOLLOW_type_end_in_type_start6149 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_declaration4_in_type_end6157 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_declaration4_in_type_end6170 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_assign_wrapper_in_field_declaration46192 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_SEMICOLON_in_field_declaration46195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_method_params2_in_method_declaration46208 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_block_wrapper_in_method_declaration46213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_modifier_in_field_modifier_wrapper6225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_198_in_field_modifier6243 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_field_type_internal_in_field_type6255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_type_internal_in_field_type_internal6274 = new BitSet(new long[]{0x0000000000000042L,0x0000000000020000L});
    public static final BitSet FOLLOW_generic_in_field_type_internal6276 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ASTERISK_in_field_type_internal6279 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_name_internal_in_name6292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ID_in_name_internal6313 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_202_in_name_internal6320 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_property_in_name_internal6327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_LITERAL_in_string_value6338 = new BitSet(new long[]{0x0000000000000002L});

}